将日期列转换为周数、日期、月份、年份
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中的日期时间格式?