3

我想从我的数据库中获取最新记录

以下是我的查询

select * from tablename order by date desc, time desc

我的问题 我的查询显示不确定的行为,有时它在网站上正常工作,但有时没有给出预期的结果。它的发生是因为时间部分

例子

2:00 pm 和 2:00 AM 这个时间怎么比较?

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

因此,如果您的数据类型确实是 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!

于 2013-10-03T09:31:11.343 回答
2

除非您有特殊要求,否则最好只使用一列datetime类型来存储日期和时间。

如果必须有两列,您可以以 24 小时格式存储时间。

于 2013-10-03T09:31:20.767 回答
2

尝试这个。将日期和时间转换为日期时间,然后按此排序。

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

我认为您应该将上午/下午的时间转换为 24 小时格式。看看这个http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

于 2013-10-03T09:31:02.033 回答