【问题标题】:How to get a week number from a date in SQL Server 2005如何从 SQL Server 2005 中的日期获取星期数
【发布时间】:2011-11-09 01:08:55
【问题描述】:

对于 TableA 中的每一行,我都有一个日期和一个星期数字段。日期字段已经填充,我希望有一种方法可以自动填写周数字段,而不必手动填写。

日期示例如下: 20111007

希望你能帮忙,干杯:)

【问题讨论】:

标签: sql-server tsql date formats


【解决方案1】:

使用此语法,您可以检索日期的星期。

SELECT datepart(week, '20111007'), datepart(iso_week, '20111007')

iso_week 仅适用于 sqlserver 2008。

您确实应该考虑将周字段设置为计算列。它会让你的生活变得更轻松(我会使用这个解决方案)。

这将是您的语法:

alter table <yourtable> add week1 as datepart(week, <yourdatecolumn>)

如果您因某种原因被阻止更改数据库,您可以使用这个:

UPDATE <table>
SET <weekcolumn> = datepart(week, <yourdate>)
WHERE week is null and <yourdate> is not null

问题是,如果日期更改,周仍将保持不变,除非使用触发器更新周,否则在使用此脚本之前,周将不可用。

您还可以创建一个视图来显示所有列并将星期添加为计算字段,这也是一个有效的解决方案。尽管列出列而不是使用 wildchar(*) 是一种好习惯,但我使用它是因为我不知道您的列。

CREATE VIEW v_yourview as
SELECT *, datepart(week, <yourdate>) week1 FROM <table>

【讨论】:

  • +1,不是针对 datepart(),而是针对真正的解决方案:计算列
  • @KM 感谢您的观点和您的评论。答案开头的日期部分演示不是解决方案的一部分,它是文档。
  • 很好的答案,我创建了一个视图,效果很好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
相关资源
最近更新 更多