【发布时间】:2010-11-09 19:21:38
【问题描述】:
如果我有一个日期 01/01/2009,我想知道它是哪一天,例如周一、周二等...
SQL Server 2005/2008 中是否为此提供了内置函数?还是我需要使用辅助表?
【问题讨论】:
-
如果您有一个包含日期部分查找的表,那么您通常做错了什么。 SQL Server 的日期函数数量众多且功能强大,因此您需要从日期中提取的任何数据都可以在日期时间列上轻松完成。
-
辅助表对于日期计算非常有用,有日历辅助表并不稀奇...
-
“对日期计算有用”是非常可疑的。大多数日期计算都可以在没有任何类型的辅助表的情况下处理,并且性能也会更好。在某些情况下,一个普通的 Numbers 表就可以完成这项工作——不需要包含实际日期的表。我看到需要一个实际日历表的唯一原因是,哪些日子是工作日,哪些日子不是很复杂的规则。我经常看到人们使用日期表,因为他们不知道如何以其他方式进行操作。然后他们必须经常填充日期表。傻。
-
如果你能告诉我一个日历表的用途,我会吃掉我的话 1) 不适用于复杂的假日/工作日规则,2) 不能通过内置函数轻松完成, 和 3) 仅当不是 #2 时,Numbers 表也可以正常工作,并且不需要使用特定日期填充表。
-
数据仓库广泛使用日历表。预先计算的月份、季度、年份等为最终用户提供了他们可以过滤/聚合的字段。
标签: sql sql-server datetime