问题
在很多情况下,日期和时间没有以您想要的格式显示在您的家门口,查询的输出也不符合查看该查询的人们的需求。一种选择是格式化应用程序本身中的数据。另一个选择是使用SQL Server提供的内置功能来格式化日期字符串。
解
SQL Server提供了许多选项,可用于格式化日期/时间字符串。首先要考虑的因素是实际所需的日期/时间。最常见的是使用getdate()的当前日期/时间。这将根据提供日期和时间的服务器来提供当前日期和时间。如果需要通用日期/时间,则应使用getutcdate()。要更改日期格式,可以将请求的日期转换为字符串,然后指定与所需格式相对应的格式编号。
如何获取不同的SQL Server日期格式
- 将日期格式选项与CONVERT函数一起使用
- 要获取YYYY-MM-DD,请使用SELECT CONVERT(varchar,getdate(),23)
- 要获取MM / DD / YYYY,请使用SELECT CONVERT(varchar,getdate(),1)
- 查看图表以获取所有格式选项的列表
以下是格式列表和输出示例。所有这些示例使用的日期为“ 2006-12-30 00:38:54.840”。
您还可以设置日期或时间的格式,而不用分割字符,以及连接日期和时间字符串:
如果要获取所有有效日期和时间格式的列表,则可以使用下面的代码,并将@date更改为GETDATE()或要使用的任何其他日期。这将仅输出有效格式。
DECLARE @counter INT = 0 DECLARE @date DATETIME = '2006-12-30 00:38:54.840' CREATE TABLE #dateFormats (dateFormatOption int, dateOutput nvarchar(40)) WHILE (@counter <= 150 ) BEGIN BEGIN TRY INSERT INTO #dateFormats SELECT CONVERT(nvarchar, @counter), CONVERT(nvarchar,@date, @counter) SET @counter = @counter + 1 END TRY BEGIN CATCH; SET @counter = @counter + 1 IF @counter >= 150 BEGIN BREAK END END CATCH END SELECT * FROM #dateFormats