我想从我的数据库中获取最新记录
以下是我的查询
select * from tablename order by date desc, time desc
我的问题 我的查询显示不确定的行为,有时它在网站上正常工作,但有时没有给出预期的结果。它的发生是因为时间部分
例子
2:00 pm 和 2:00 AM 这个时间怎么比较?
确切的查询是为了获取最新的行
select Top 1 * from tablename order by date desc, time desc
Select Top 1 ColumnName from dbo.TableName Order by date,time desc
因此,如果您的数据类型确实是 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 列!或者至少将 DataType 更改为 TIME 和 DATE!
除非您有特殊要求,否则最好只使用一列datetime
类型来存储日期和时间。
如果必须有两列,您可以以 24 小时格式存储时间。
尝试这个。将日期和时间转换为日期时间,然后按此排序。
select *
from tablename
order by cast(date AS DATETIME) + cast(time AS DATETIME)
我认为您应该将上午/下午的时间转换为 24 小时格式。看看这个http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format