【问题标题】:Sorting datetime data in SQL Server 2008在 SQL Server 2008 中对日期时间数据进行排序
【发布时间】:2015-09-01 00:29:43
【问题描述】:

我有一组数据,格式如下:

LocalDate  LocalTime SourceID  UtcTimestamp
04/30/2013 09:05:10  sourceID1 2013-04-29 23:05:00.707
04/30/2013 09:34:10  sourceID2 2013-04-29 23:34:00.707
04/30/2013 09:10:56  sourceID3 2013-04-29 23:10:00.067
01/17/2014 10:41:31  sourceID4 2014-01-17 00:41:31.147

我需要对以上数据进行降序排序。我的第一次尝试是对LocatDate 和LocalTime 排序。但是,“LocalDate”和“LocalTime”的数据类型是 varchar。然后我尝试了以下操作,因为 UtcTimestamp 数据类型是日期时间:

SELECT TOP 10000 ManagementRecords.LocalDate, ManagementRecords.LocalTime, ManagementRecords.SourceSUID, ManagementRecords.UtcTimestamp 
FROM DB.dbo.ManagementRecords ManagementRecords  
ORDER BY ManagementRecords.UtcTimestamp DESC

但是上述方法不起作用。 “执行查询”过程从不返回任何内容。为什么? 我真的很感激这方面的一些帮助。

【问题讨论】:

  • 您发布的查询不是您实际使用的查询,因为它有一个拼写错误会阻止它执行(具体来说,您在 SELECT 和 @ 中都使用了别名 table 987654325@,但您的 FROM 子句指定别名 tables(复数)。如果您希望我们帮助解决您的 SQL 语句问题,请复制并粘贴 实际 SQL 语句,而不是您的即时弥补或手动输入(您可以在其中引入拼写错误或不正确的语法)。
  • 谢谢,我现在就编辑它。感谢您指出这一点。
  • 当我摆脱“ORDER BY”语句时,我得到了查询的结果,但是当我添加“ORDER BY”时,我什么也得不到。
  • 如果你等待足够长的时间,你会得到一些东西。问题不在于你什么也得不到。问题是它表现不佳。另一个问题是您将日期存储在 varchar 字段中。
  • 我认为你是对的,这是由于 ORDER 查询的性能不佳。

标签: sql-server sql-server-2008 datetime


【解决方案1】:

你看过你的sql生成的执行计划了吗?如果您按非索引列排序,那么它可能正在执行全表扫描。根据您的表有多大,这可能需要一段时间才能返回结果。

如果您能够修改表,您可以尝试以下方法来添加索引:

CREATE NONCLUSTERED INDEX ManagementRecords_TimeStamp ON DB.dbo.ManagementRecords ManagementRecords(UtcTimestamp); 

【讨论】:

  • 我相信你是对的,我现在正在看执行计划。在查询多个表的情况下,如何识别哪个表缺少索引?
  • ... 在哪里查询多个表?那将是一个不同的问题,不是吗?这个问题与单个表查询有关
【解决方案2】:

对于您的第二种方法,您将表的别名用作表,因此如果您想显式引用 table_alias.column,请使用表,即您分配给表的别名。但在你的情况下,我认为你不需要使用别名。

对于按 localDate、localTime 排序,请使用 convert(date, localDate, 1) 函数。 总结一下,您的查询应如下所示: select * from db.dbo.[table] order by convert(date, localDate, 1)

【讨论】:

  • 谢谢。我注意到了。我已经编辑了声明。在我原来的语句中这不是问题,因为当我摆脱“ORDER BY”语句时,我得到了查询的结果,但是当我添加“ORDER BY”时,我什么也没得到。
猜你喜欢
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多