0

「date_time 順」で困っています。データベースにアクセスしているphpページがあります。データをテーブルに表示する関数があります。sql ステートメントは次のとおりです。

SELECT date_time
, pass_no
, location2 
from usr_vftcapstone_0.vftPasses as P, Scans as S 
where P.user_name='terak' and S.details2=P.`pass_no` order by S.date_time;

ユーザーに関連するすべてのデータを取得できるように、「結合」を行っています。ユーザーはパスのリストを持っています。これらのパスには location2 があります。ユーザーに割り当てられたすべてのパスからすべての「location2」エントリを取得しようとしています。

私が試してみました:

order by convert(datetime, date_time, 103) ASC

style 103 = dd/MM/yyyy (msdn)  

このため、「スタイル 103」をどこに含めればよいかわかりません。同じSQLステートメントで「ASC」の後に試しましたが、それがどのように機能するとは思いません。

私の出力は降順で並べられていますが、月ごとに並べられています。年単位で注文する必要があります。
date_time フィールドは次のように表示されます。1/01/2013 10:30:51

これに関するヘルプは大歓迎です。よろしくお願いします。

4

3 に答える 3

0

date_time フィールドで並べ替えるだけです。表示目的でのみ文字列に変換します。

于 2013-06-03T02:03:12.863 に答える
0

これで試すことができますか

SELECT date_time
, pass_no
, location2 
from usr_vftcapstone_0.vftPasses as P, Scans as S 
where P.user_name='terak' and S.details2=P.`pass_no` 
order by SUBSTRING(S.date_time,7,4) ASC

ここから使いました

SUBSTRING ( expression ,start , length )

これも試してみてください

Use DATEPART (Transact-SQL)を使用して年を抽出しました。

 SELECT date_time
    , pass_no
    , location2 
    from usr_vftcapstone_0.vftPasses as P, Scans as S 
    where P.user_name='terak' and S.details2=P.`pass_no` order by 
datePart(yy, convert(datetime, S.date_time, 103)) ASC
于 2013-06-03T07:06:12.713 に答える
0

試す:

ORDER BY STR_TO_DATE(date_time, '%d/%m/%Y %H:%i:%s')

スタイル番号は SQL Server 用ですが、クエリは MySQL のように見えます。

日付がさまざまな形式である場合 (これはどんな種類のめちゃくちゃなデータベースですか?)、次のようなことができます:

ORDER BY CASE WHEN date_time LIKE '%/%/% %:%:%'
                   THEN STR_TO_DATE(date_time, '%d/%m/%Y %H:%i:%s')
              WHEN date_time LIKE '%/%/% %:%'
                   THEN STR_TO_DATE(date_time, '%d/%m/%Y %H:%i')
         END
于 2013-06-03T02:28:38.473 に答える