3

データベースから最新のレコードを取得したい

以下は私のクエリです

select * from tablename order by date desc, time desc

私の問題 クエリが不確かな動作を示します。Web サイトでは適切に機能する場合もありますが、目的の結果が得られない場合もあります。時間の部分で起こる

午後2時と午前2時 今回はどう比較する?

4

6 に答える 6

3

正確なクエリは、最新の行を取得するためのものです

 select Top 1 * from tablename order by date desc, time desc
于 2013-10-03T09:50:51.907 に答える
2
 Select Top 1 ColumnName from dbo.TableName Order by date,time desc
于 2013-10-03T09:33:25.887 に答える
2

これを試して。日付と時刻を日時に変換し、それで並べ替えます。

select * 
from tablename 
order by cast(date AS DATETIME) + cast(time AS DATETIME)
于 2013-10-03T09:28:33.600 に答える
2

したがって、データ型が実際に VARCHAR である場合は、order by 句で日付と時刻に変換できます

begin
declare @time1 time
declare @time2 time

declare @test table(
    mytime varchar(max),
    mydate varchar(max)
)

insert into @test VALUES('2:00 pm', '10-10-2010')
insert into @test VALUES('2:00 am', '08-05-2009')

SELECT * FROM @test ORDER BY CONVERT(date, mydate) DESC, CONVERT(time,  mytime) DESC

end

しかし、DateTime列が1つだけになるように、テーブル構造を変更することをお勧めします! または、少なくとも DataType を TIME と DATE に変更してください!

于 2013-10-03T09:31:11.343 に答える
2

datetime特別な要件がない限り、日付と時刻を格納するタイプの列を 1 つだけ使用することをお勧めします。

2 つの列が必要な場合は、時間を 24 時間形式で保存できます。

于 2013-10-03T09:31:20.767 に答える
0

AM/PM の時刻を 24 時間形式に変換する必要があると思います。これをチェックしてくださいhttp://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

于 2013-10-03T09:31:02.033 に答える