1

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

日期示例如下:20111007

希望你能帮忙,干杯:)

4

1 回答 1

4

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

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

iso_week 仅适用于 sqlserver 2008。

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

这将是您的语法:

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>
于 2011-09-02T09:51:25.127 回答