如何从SQL Server中检索YYYY-MM-DD格式的日期?我需要这个工作与SQL Server 2000及更高。是否有一个简单的方法来执行这在SQL Server或它会更容易转换后,我检索的结果集?

我已经阅读了微软Technet上的CAST和CONVERT,但我想要的格式没有列出,改变日期格式也不是一个选项。


当前回答

如果你的源日期格式乱七八糟,试试下面的方法:

select
convert(nvarchar(50),year(a.messedupDate))+'-'+
(case when len(convert(nvarchar(50),month(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),month(a.messedupDate))+'-' 
    else convert(nvarchar(50),month(a.messedupDate)) end)+
(case when len(convert(nvarchar(50),day(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),day(a.messedupDate))+'-'
    else convert(nvarchar(50),day(a.messedupDate)) end) 
from messytable a

其他回答

对于YYYYMMDD,请尝试

select convert(varchar,getDate(),112)

我只在SQLServer2008上进行了测试。

将GetDate()更改为字符串格式:

SELECT FORMAT(GetDate(), 'yyyy-MM-dd HH:mm:ss')

对于那些也想要时间部分的人(我想),下面的片段可能会有所帮助

SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
                              --example -- 2008-10-02T10:52:47.513

您所需要的表格在图书在线文档中列出。

http://msdn.microsoft.com/en-us/library/aa226054 (SQL.80) . aspx

例如,尝试以下方法:

select convert(varchar,getDate(),120)
select convert(varchar(10),getDate(),120)

从SQL Server 2012开始(最初的问题是2000年的):

选择格式(GetDate),“yyy- eddd”)