-1

我有以下格式的日期

'2013-09-22 00:00:00.000'

我需要这个22-09-2013, Sunday22-Sep-2013, Sunday格式。我力求找到任何转换功能来度过几天。

谢谢

4

4 回答 4

1

我认为您需要使用 CONVERT() 和 DATENAME() 函数,如下所示:

1) select CONVERT(varchar(20), getdate(),105) + ',' + datename(DW, getdate())

2) select REPLACE(CONVERT(varchar(20), getdate(),106),' ','-') + ',' + datename(DW, getdate())

结果是

07-11-2013, Thursday and 07-Nov-2013, Thursday
于 2013-11-07T08:10:56.777 回答
1
SELECT REPLACE(REPLACE(CONVERT(VARCHAR(11), GETDATE(), 103), ' ', '-'), '/', '-') + ', ' + datename(dw,getdate()) AS [DD-Mon-YYYY];

SELECT REPLACE(REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-'), '/', '-') + ', ' + datename(dw,getdate()) AS [DD-Mon-YYYY];

输出:

07-11-2013, Thursday07-Nov-2013, Thursday

(您可能不需要第一个 REPLACE 功能。没有它,我的第二个日期显示为07/11/2013, Thursday。 replace 只是用您指定的替换'/''-'

不过,我同意其他人的建议,即应在客户端应用程序中处理转换。特别是如果应用程序将在不同的时区使用。在 SQL 中硬编码日期格式可能会导致混淆。

于 2013-11-07T08:11:00.323 回答
0

存储在 SQL-Server 中的日期没有任何格式。它是客户端应用程序(例如 ssms)格式化日期。

如果您需要在服务器端格式化日期,您可以使用CAST 或 CONVERT函数将其转换为 varchar。

SELECT CONVERT(varchar(50),@date,110)+', '+ DATENAME(weekday, GETDATE())
于 2013-11-07T08:12:01.043 回答
0

你可以写成:

 SELECT CONVERT(VARCHAR(10), GETDATE(), 105) + ', '+ DATENAME (weekday ,GETDATE())  AS [DD-MM-YYYY, DAY],
        REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-') + ', '+ DATENAME (weekday ,GETDATE()) AS [DD-Mon-YYYY, DAY]
于 2013-11-07T08:12:33.310 回答