如何使用基于日期时间字符串的最新SQL命令返回项目?
我有一张这样的桌子:如何使用基于日期时间字符串的最新SQL命令返回项目?,sql,sql-server-2012,Sql,Sql Server 2012,我有一张这样的桌子: location | object | date-time-string | id -------------------------------------------- Login | label | 5/17/14 4:29:20 | 1 Login | main | 5/17/14 4:29:20 | 2 Login | button | 5/17/14 4:29:20 | 3 Login | name | 5/17/14 4
location | object | date-time-string | id
--------------------------------------------
Login | label | 5/17/14 4:29:20 | 1
Login | main | 5/17/14 4:29:20 | 2
Login | button | 5/17/14 4:29:20 | 3
Login | name | 5/17/14 4:29:20 | 4
Login | passwd | 5/17/14 4:29:20 | 5
Login | pic | 5/17/14 4:29:20 | 6
Login | label | 5/16/14 1:13:10 | 7
Login | main | 5/16/14 1:13:10 | 8
Login | button2| 5/16/14 1:13:10 | 9
我有一个疑问:
select object from table where location = 'Login' order by time desc
我想获取“对象”列中最近时间的所有项目的列表。日期时间字符串由C#中的DateTime.Now
生成,并插入到sql表中
如何使用SQL命令返回基于日期时间字符串的最新项目?我不是100%确定,但请尝试以下方法:
SELECT object
FROM table a
INNER JOIN
(SELECT TOP 1 date-time-string
FROM table
ORDER BY date-time-string DESC) b
ON a.date-time-string=b.date-time-string
我不是100%确定,但试试这个:
SELECT object
FROM table a
INNER JOIN
(SELECT TOP 1 date-time-string
FROM table
ORDER BY date-time-string DESC) b
ON a.date-time-string=b.date-time-string
如果日期时间字符串不是日期时间类型,则可能必须强制转换为该类型才能使订单正常工作
我现在明白了,我可能误解了这个问题,我认为它是所有类型的最后一个“对象”。如果是上次的所有对象,请执行以下操作:
select location, object, date-time-string, id
from (
select location, object, date-time-string, id
, rank() over (order by date-time-string desc) as rn
from T
) a
where rn = 1
如果日期时间字符串不是日期时间类型,则可能必须强制转换为该类型才能使订单正常工作
我现在明白了,我可能误解了这个问题,我认为它是所有类型的最后一个“对象”。如果是上次的所有对象,请执行以下操作:
select location, object, date-time-string, id
from (
select location, object, date-time-string, id
, rank() over (order by date-time-string desc) as rn
from T
) a
where rn = 1
mm/dd/yy
,这是
表现将是糟糕透顶的,但你完全有资格打破所有关于处理日期的好消息
mm/dd/yy
,这是
性能将非常糟糕,但你完全有资格打破关于处理日期的所有好的方面。如果列
time
(或日期时间字符串
,它是什么?)实际上是正确的日期数据类型,你的查询将正常工作。如果它是VARCHAR()
列,则需要将其转换为datetime。它不是sql时间戳,而是从C#应用程序插入的字符串。为什么从datetime.Now
插入时它是字符串?不要将datetime
存储为varchar
@Tim-我是否应该将数据类型更改为“timestamp”?@ma3str0:如果列time
(或日期时间字符串
,即它?)实际上是正确的日期数据类型,则您的查询将正常工作。如果它是VARCHAR()
列,则需要将其转换为datetime。它不是sql时间戳,而是从C#应用程序插入的字符串。为什么从datetime.Now
插入时它是字符串?不要将datetime
存储为varchar
@Tim-我应该将数据类型更改为“timestamp”吗?@ma3str0: