SQL中的格式化日期

时间:2011-11-07 18:32:51

标签: sql sql-server-2005 datetime formatting

我希望我的日期是YYYY-MM-DD(DD-MM-YYYY),我似乎无法转换成这种形式。我已经看过CAST and Convert T-SQL了。

作为一般性问题,我可以根据我的需要设置日期格式,例如DD-MM(YEAR)等。您可以在MYSQL中轻松完成。

SELECT GETDATE() // start with this query

BTW Stackoverflow搜索不好。我在2M +问题中找不到类似的问题。

4 个答案:

答案 0 :(得分:1)

为了获得没有时间的日期:

--char(10) limits the length to 10 characters thereby removing the time stamp
SELECT CONVERT(char(10), GetDate(),126) -- Output: 2011-11-07

获取带有时间戳的日期:

SELECT CONVERT(VARCHAR, GetDate(), 126) --Output: 2011-11-07T13:42:25.913

有关所有可能的格式,请参阅MSDN docs

答案 1 :(得分:0)

尝试格式120

SELECT CONVERT(VARCHAR, GETDATE(), 120) -- result: 2011-11-07 13:48:45

如果要截断这个,只返回日期部分,请在VARCHAR转换中指定大小限制:

SELECT CONVERT(VARCHAR(10), GETDATE(), 120) -- result: 2011-11-07

答案 2 :(得分:0)

SELECT CONVERT(VARCHAR(19), GETDATE(), 120) /*YYYY-MM-DD HH:MI:SS(24h)*/

SELECT CONVERT(VARCHAR(23), GETDATE(), 126) /*YYYY-MM-DDTHH:MM:SS:MMM*/

SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD]

SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]

答案 3 :(得分:0)

这绝对不是最快的选择,但它符合您的要求,并可能在将来对其他人有用。

DECLARE @date DATETIME
SET @date = GETDATE()
SELECT CAST(DATEPART(YYYY, @date) AS NVARCHAR(4)) + '-' 
 + CAST(DATEPART(MM, @date) AS NVARCHAR(2)) + '-'
 + CAST(DATEPART(DD, @date) AS NVARCHAR(2)) + ' ('
 + CAST(DATEPART(DD, @date) AS NVARCHAR(2)) + '-'
 + CAST(DATEPART(MM, @date) AS NVARCHAR(2)) + '-'
 + CAST(DATEPART(YYYY, @date) AS NVARCHAR(4)) + ')' 

输出:

2011-11-7 (7-11-2011)