【问题标题】:SQL table with Day, Date, Month, Year, Period, Week Number? (SQL)带有日、日期、月、年、期间、周数的 SQL 表? (SQL)
【发布时间】:2016-04-21 22:09:02
【问题描述】:

很久以前,我使用 SQL 创建了一个表,其中包含 Day、Month、Year、Weekday、Date 和 Period(例如:2016 年 4 月)。 这是我当前表格的样子:

|   Period   | Day | Month | Year | Weekday |    Date   |
|:-----------|-----|-------|------|---------|----------:|
| April 2016 | 21  | April |2016  |Thursday |2016-04-21 |

现在我需要添加 Week(这是当月的第 1 周、第 2 周、...)。

这个选择语句给出了正确的结果:

SELECT datediff(week, dateadd(week, datediff(week, 0, dateadd(month, datediff(month, 0, GETDATE()), 0)), 0), GETDATE() - 1) + 1

此查询返回

4

如何将一个名为 Week 的新列插入到这个现有表中并让它找到当前的周数?

我相信现有表正在使用GETDATE() 来计算其值。不幸的是,我没有 CREATE 查询了。

非常感谢任何帮助!

【问题讨论】:

  • Unfortunately I do not have my CREATE query anymore.使用SQL Server Management Studio,右击表生成创建脚本
  • 是右键单击> 脚本表为> 创建到> 新查询编辑器窗口?如果是这样,那只会创建列但不会设置它们的计算值:(

标签: sql sql-server alter-table getdate


【解决方案1】:

首先使用ALTER TABLEweek添加一列

ALTER TABLE TableName
ADD Week int

然后UPDATE带有周数的列:

UPDATE TableName
SET Week = DATEPART(day, DATEDIFF(day, 0, [Date])/7 * 7)/7 + 1

注意:此week 号码仅基于日期,而不是一周中的几天(星期一、星期二)等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-28
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多