相同 SQL 命令的日期格式不同的原因?
Reason for difference in the date format with the same SQL Command?
当我尝试运行下面提到的查询时:
SELECT CONVERT(varchar(11), GETDATE(),106)
我得到结果:
23 Jan 2015
然而,查询:
SELECT
CONVERT(VARCHAR(10), DATEADD(ms, DATEDIFF(ms, '00:00:00', IST), crea_date), 101)
FROM
Completed_Scrubs CS
LEFT JOIN
TimeZonesTable TZT ON CS.States = TZT.State_US_CA
WHERE
fiscal_week_num = 201549
和查询
SELECT
CONVERT(VARCHAR(11), CONVERT(VARCHAR(10), DATEADD(ms, DATEDIFF(ms, '00:00:00', IST), crea_date), 101), 105)
FROM
Completed_Scrubs CS
LEFT JOIN
TimeZonesTable TZT ON CS.States = TZT.State_US_CA
WHERE
fiscal_week_num = 201549
Return同样的结果:
(No column name)
12/31/2014
12/30/2014
12/19/2014
01/03/2015
01/06/2015
01/08/2015
01/01/2015
01/03/2015
01/07/2015
01/08/2015
为什么?有没有办法将上述查询中的日期格式化为“2015 年 1 月 23 日”。
CONVERT()
函数接受一个格式代码(您在各种查询中有 101、105 和 106)告诉 SQL 服务器如何安排 DATETIME
字段(有关代码和相关格式的完整列表,请查看 here)。
您的查询返回了不同的结果,因为您告诉他们使用不同的格式代码。请查看链接的文档并选择适合您要求的格式代码 - 在本例中,您的第一个查询中的 106
格式。
当我尝试运行下面提到的查询时:
SELECT CONVERT(varchar(11), GETDATE(),106)
我得到结果:
23 Jan 2015
然而,查询:
SELECT
CONVERT(VARCHAR(10), DATEADD(ms, DATEDIFF(ms, '00:00:00', IST), crea_date), 101)
FROM
Completed_Scrubs CS
LEFT JOIN
TimeZonesTable TZT ON CS.States = TZT.State_US_CA
WHERE
fiscal_week_num = 201549
和查询
SELECT
CONVERT(VARCHAR(11), CONVERT(VARCHAR(10), DATEADD(ms, DATEDIFF(ms, '00:00:00', IST), crea_date), 101), 105)
FROM
Completed_Scrubs CS
LEFT JOIN
TimeZonesTable TZT ON CS.States = TZT.State_US_CA
WHERE
fiscal_week_num = 201549
Return同样的结果:
(No column name)
12/31/2014
12/30/2014
12/19/2014
01/03/2015
01/06/2015
01/08/2015
01/01/2015
01/03/2015
01/07/2015
01/08/2015
为什么?有没有办法将上述查询中的日期格式化为“2015 年 1 月 23 日”。
CONVERT()
函数接受一个格式代码(您在各种查询中有 101、105 和 106)告诉 SQL 服务器如何安排 DATETIME
字段(有关代码和相关格式的完整列表,请查看 here)。
您的查询返回了不同的结果,因为您告诉他们使用不同的格式代码。请查看链接的文档并选择适合您要求的格式代码 - 在本例中,您的第一个查询中的 106
格式。