データベースから最新のレコードを取得したい
以下は私のクエリです
select * from tablename order by date desc, time desc
私の問題 クエリが不確かな動作を示します。Web サイトでは適切に機能する場合もありますが、目的の結果が得られない場合もあります。時間の部分で起こる
例
午後2時と午前2時 今回はどう比較する?
正確なクエリは、最新の行を取得するためのものです
select Top 1 * from tablename order by date desc, time desc
Select Top 1 ColumnName from dbo.TableName Order by date,time desc
これを試して。日付と時刻を日時に変換し、それで並べ替えます。
select *
from tablename
order by cast(date AS DATETIME) + cast(time AS DATETIME)
したがって、データ型が実際に 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 に変更してください!
datetime
特別な要件がない限り、日付と時刻を格納するタイプの列を 1 つだけ使用することをお勧めします。
2 つの列が必要な場合は、時間を 24 時間形式で保存できます。
AM/PM の時刻を 24 時間形式に変換する必要があると思います。これをチェックしてくださいhttp://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format