我想从数据库
获取最新记录以下是我的查询
select * from tablename order by date desc, time desc
我的问题 我的查询显示不确定的行为,有时它在网站上正常工作,但有时不会给出所需的结果。这是因为时间部分
示例
下午2:00和凌晨2:00如何比较这个时间?
答案 0 :(得分:3)
确切的查询是获取最新的行
select Top 1 * from tablename order by date desc, time desc
答案 1 :(得分:2)
试试这个。将日期和时间转换为日期时间,然后按顺序排序。
select *
from tablename
order by cast(date AS DATETIME) + cast(time AS DATETIME)
答案 2 :(得分:2)
所以,如果你的数据类型真的是VARCHAR,你可以按顺序将它转换为日期和时间
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!
答案 3 :(得分:2)
除非您有特殊要求,否则最好只使用datetime
类型的一列来存储日期和时间。
如果必须使用两列,则可以24小时格式存储时间。
答案 4 :(得分:2)
Select Top 1 ColumnName from dbo.TableName Order by date,time desc
答案 5 :(得分:0)
我认为您应该将AM / PM的时间转换为24小时格式。看看http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format