【发布时间】:2015-01-23 15:06:44
【问题描述】:
当我尝试运行下面提到的查询时:
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
返回相同的结果:
(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 日”。
【问题讨论】:
-
DATEDIFF 和 DATEADD 不是 ANSI SQL。您使用的是哪个 dbms?
-
@jarlh 这看起来像
SQL Server。 -
嗯....是的。这就是
106格式的作用,在后面的查询中,您使用的是101和105格式 -
MSDN 有一个关于 CONVERT() 函数及其可以返回的不同日期格式的优秀页面。
标签: sql sql-server datetime time