将日期列转换为周数、日期、月份、年份

Posted

技术标签:

【中文标题】将日期列转换为周数、日期、月份、年份【英文标题】:convert date column into week number, date, month, year 【发布时间】:2017-04-05 06:26:54 【问题描述】:

我在数据库中有一个日期列 Time,我想将其转换为 4 个新列

    周 天 月 年

我在我的 test 数据库中使用了类似的东西

SELECT DATEPART(wk,`Time`), DATEPART(dd,`Time`),DATEPART(mm,`Time`),DATEPART(wk,`yyyy`), FROM `Test` WHERE 1

这有什么问题?

【问题讨论】:

我删除了 mysql 标签,因为它没有DATEPART() 包装标识符的`是MySql,但DATEPART函数是Sql server。如果是 Sql Server,只需将标识符中的 ` 去掉即可。 你想用WHERE 1做什么? 【参考方案1】:

在 Sql server 中,你不能用 ` 包裹你的标识符。

但是,由于Time 是sql server 中的一种数据类型,所以我用[] 包装了它: 试试这个查询:

SELECT DATEPART(Week,[Time]) As [Week],
       DATEPART(Day,[Time]) As [Day],
       DATEPART(Month,[Time]) As [Month],
       DATEPART(Year,[Time]) As [Year] 
FROM Test

另外,在 select 子句的最后一个元素之后有一个额外的逗号, 并且 Where 子句没有意义,所以我删除了它。

【讨论】:

谢谢。像 DATEPART 和 day(time) 那样做有什么区别? 唯一的区别是datepart可以返回日期的不同部分,而day只返回日期部分。 Day(Time) 将返回与 Datepart(Day, Time) 相同的内容。【参考方案2】:

你有错误的语法来获取年份并且在 From 子句之前还有额外的 (,)

尝试如下:

SELECT DATEPART(wk,GETDATE()), DATEPART(dd,GETDATE()),DATEPART(mm,GETDATE()),DATEPART(yy,GETDATE())

SELECT DATEPART(week,GETDATE()), DATEPART(day,GETDATE()),DATEPART(month,GETDATE()),DATEPART(year,GETDATE())

SELECT DATEPART(wk,[Time]), DATEPART(dd,[Time]),DATEPART(mm,[Time]),DATEPART(yy,[Time]) From TableName

【讨论】:

【参考方案3】:
select datepart(week,GETDATE()) as [week]
        , datepart(DAY,GETDATE()) as [DAY]
        , datepart(month,GETDATE()) as [month]
         ,datepart(year,GETDATE()) as [year]

【讨论】:

【参考方案4】:

您也可以像这样使用YEAR,MONTH,DAY 来简化它:

SELECT
    YEAR(GETDATE()),
    MONTH(GETDATE()),
    DAY(GETDATE()),
    DATEPART(WEEK,GETDATE())

【讨论】:

以上是关于将日期列转换为周数、日期、月份、年份的主要内容,如果未能解决你的问题,请参考以下文章

将月份和年份列转换为带有附加字符串连接的日期列

转换日期:从年份和周数转换为日期时间

python - 如何将带有年份的周数转换为python pandas中的日期时间格式?

仅将带有年份和月份的字符串转换为仅适用于年份和月份的日期格式

如何将 jQuery 日期选择器转换为仅选择月份和年份?

如何将周数和年份转换为 unix 时间戳?