Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用基于日期时间字符串的最新SQL命令返回项目?_Sql_Sql Server 2012 - Fatal编程技术网

如何使用基于日期时间字符串的最新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: