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

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


当前回答

带有格式说明符120的convert函数将为您提供格式“yyyy-MM-dd HH:mm:ss”,因此您只需将长度限制为10以只获得日期部分:

convert(varchar(10), theDate, 120)

然而,日期格式化通常在表示层而不是在数据库或业务层更好。如果从数据库返回格式化的日期,那么如果客户机代码需要对其进行任何计算,则必须再次将其解析为日期。

c#中的例子:

theDate.ToString("yyyy-MM-dd")

其他回答

我不知道为什么最简单的方法在上面的答案中被忽略了:

SELECT FORMAT(GetDate(),'yyyy-MM-dd');--= 2020-01-02

SELECT FORMAT(GetDate(),'dd MMM yyyy HH:mm:ss');-- = 02 Jan 2020 08:08:08

我更喜欢第二个,因为无论你说什么语言,你都知道今天是什么日子!

此外,当你将数据发送到保存过程时,SQL Server总是“理解”它,无论计算机中设置的是哪种区域格式——我在编程中总是使用全年(yyyy)、月名(MMM)和24小时格式(大写HH)来表示小时。

从SQL Server 2008你可以这样做:CONVERT(date,getdate())

对于YYYYMMDD,请尝试

select convert(varchar,getDate(),112)

我只在SQLServer2008上进行了测试。

我会用:

CONVERT(char(10),GETDATE(),126)

以防有人想用另一种方式来做,发现了这个。

select convert(datetime, '12.09.2014', 104)

这将德国日期格式的字符串转换为datetime对象。

为什么是104年?请看这里:http://msdn.microsoft.com/en-us/library/ms187928.aspx