【发布时间】:2013-10-28 21:32:10
【问题描述】:
长标题,简单的意思: 如何从存储在一个列中的“2014-04-04 10:47:30.000”之类的日期中提取,它的组件是年、月和日? 我对时间不感兴趣。
例如,我有一个名为“事件”的表。在表中,我们有一个名为“IncidentID”的列和一个名为“ReportingDate”的列,其中存储了上述提到的日期。假设我们有大约 50k 个事件,因此我们也有 50k 个日期。 一年有365天。我想查询在不同日期(例如 2013 年 10 月 5 日)报告的事件的计数。
那么:如何获取日期的组件并将它们放入另一个表中,同时拥有自己的组件列,以及如何查询事件?
我想一开始我必须将日期的数据类型从 DATETIME 更改为 DATE,但我不太确定如何更进一步。任何人都可以在给我代码的同时帮助我并解释它对 sql-noob 的作用吗? :-)
【问题讨论】:
-
cast(datetimecolumn as date) -
@Laurence 可以,但是: (a) 在几乎所有情况下,您都希望避免对列执行表达式,因为它会阻碍 SQL Server 有效使用索引的能力。 (b) 虽然在当前版本的 SQL Server 中强制转换为日期可能是该规则的一个例外,但这并不意味着它会一直以这种方式工作,也不意味着它很棒;见this answer by Martin Smith。正确的方法是使用范围查询,例如Hamlet's answer below。
-
@AaronBertrand 你说得对,我没有阅读完整的问题。
标签: sql sql-server date datetime extract