对于 TableA 中的每一行,我都有一个日期和一个星期数字段。日期字段已经填充,我希望有一种方法可以自动填写周数字段,而不必手动填写。
日期示例如下:20111007
希望你能帮忙,干杯:)
对于 TableA 中的每一行,我都有一个日期和一个星期数字段。日期字段已经填充,我希望有一种方法可以自动填写周数字段,而不必手动填写。
日期示例如下:20111007
希望你能帮忙,干杯:)
使用此语法,您可以检索日期的星期。
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>