选择DATEPART,DATENAME还是其他?的SQL

时间:2019-02-20 18:14:42

标签: sql sql-server tsql

我正在创建一个新查询,我想在其中添加三列(相同格式):

周数(截至08)/月(截至2月)/年(截至2019)

SELECT hd.F91 AS [PO Number],
hd.F1032 AS [Trs Number],
hd.F76 AS [Order Date],
hd.F27 AS [Vendor ID],
hd.F334 AS [Vendor Name],
hd.F1127 AS Admin,
hd.F1068 AS State,
hd.F1067 AS Status,
tl.F65 AS Total,
DATEPART(wk,[Order Date]) AS [Week Number],
DATENAME('month',[Order Date]) AS Month,
DATENAME('year',[Order Date]) AS Year,

其余数据正在从我们的系统中提取,但是我试图根据一个已经存在的名为Order Date(日期格式)的列来获取这三列。

不幸的是,出现以下错误。欢迎所有尝试的建议。谢谢!

enter image description here

3 个答案:

答案 0 :(得分:1)

这些函数在mysql中有效(与之前编辑问题的标签相同!!):

WEEK([Order Date], 1) AS [Week Number],
MONTHNAME([Order Date]) AS Month,
YEAR([Order Date]) AS Year,

根据需要更改1中的参数WEEK
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

答案 1 :(得分:0)

尝试一下,它在postgreSQL中对我有用  to_char([订购日期],“月”)

答案 2 :(得分:0)

此问题最初是为POSTGRES标签的。

ANSI标准功能是:

extract(week from "Order Date")
extract(month from "Order Date")
extract(year from "Order Date")

Postgres支持此标准语法。

如果需要字符串,可以使用to_char()

to_char("Order Date", 'WW')
to_char("Order Date", 'YYYY')
to_char("Order Date", 'Month')