2011-11-07 36 views
1

我想我的日期是YYYY-MM-DD(DD-MM-YYYY),我似乎无法转换成此格式。我已经看过CAST and Convert T-SQL在SQL中格式化日期

作为一般性问题,我可以根据我的需要格式化日期,例如DD-MM(YEAR)等。您可以轻松地在MYSQL中执行此操作。

SELECT GETDATE() // start with this query 

顺便说一句,Stackoverflow搜索不好。在2M +问题中我找不到类似的问题。

+0

作为一般的答案,SQL不格式化,请格式化你的前端,报告文学家等 – onedaywhen

回答

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

+0

而且顺便说一句我能根据格式化我的需求像DD-MM(YYYY) –

+0

你的问题说你想要'YYYY-MM-DD',对吧? –

+0

现在我用varchar(10)得到它的逻辑,其余的数据被忽略。有人应该解释说:) –

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 
+0

错误我猜你知道为什么大声笑 –

+0

其实,格式'120'是更好的,我想。 –

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] 
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)