暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

使用SQL Server进行日期和时间转换

原创 沙沃兴 2023-02-04
4509

      在许多情况下,日期和时间不会以你希望的格式出现,查询的输出结果也不符合查看它的人的需求。一种选择是在应用程序本身中格式化数据。 另一种选择是使用 SQL Server 提供的内置函数来格式化日期字符串。


SQL Server 提供了许多选项,从表中可用于在输入文件(Excel、CSV 等)或日期列中设置 SQL 查询和存储过程中的日期/时间字符串的格式 (datetime, datetime2, smalldatetime等)。 首先要考虑的因素之一是所需的实际日期/时间值。最常见的 是使用datedate() 的当前日期/时间。这根据服务器的日期和时间提供了当前日期和时间。如果是通用日期/时间 (UTC) 是必需的,然后应该使用 getutcdate().要格式化日期,将请求的日期转换为字符串并指定相应的格式数字 到所需的格式。

如何在 SQL Server 中获取不同的日期格式

  1. 使用Select语句和Convert函数,以及日期格式的选项转换为所需的日期值。
  2. 要获取 YYYY-MM-DD,请使用此 T-SQL 语法 select convert(varchar,getdate(),23)。
  3. 若要获取 MM/DD/YY,请使用此 T-SQL 语法,select convert(varchar,getdate(),1)。
  4. 查看下面的图表以获取所有格式选项的列表

下面是 SQL 日期格式的列表和输出示例。使用的日期 所有这些示例都是2022-12-30 00:38:54.840"。

DATE ONLY FORMATS
Format #QueryFormatSample
1select convert(varchar, getdate(), 1)mm/dd/yy12/30/22
2select convert(varchar, getdate(), 2)yy.mm.dd22.12.30
3select convert(varchar, getdate(), 3)dd/mm/yy30/12/22
4select convert(varchar, getdate(), 4)dd.mm.yy30.12.22
5select convert(varchar, getdate(), 5)dd-mm-yy30-12-22
6select convert(varchar, getdate(), 6)dd-Mon-yy30 Dec 22
7select convert(varchar, getdate(), 7)Mon dd, yyDec 30, 22
10select convert(varchar, getdate(), 10)mm-dd-yy12-30-22
11select convert(varchar, getdate(), 11)yy/mm/dd22/12/30
12select convert(varchar, getdate(), 12)yymmdd221230
23select convert(varchar, getdate(), 23)yyyy-mm-dd2022-12-30
31select convert(varchar, getdate(), 31)yyyy-dd-mm2022-30-12
32select convert(varchar, getdate(), 32)mm-dd-yyyy12-30-2022
33select convert(varchar, getdate(), 33)mm-yyyy-dd12-2022-30
34select convert(varchar, getdate(), 34)dd-mm-yyyy30-12-2022
35select convert(varchar, getdate(), 35)dd-yyyy-mm30-2022-12
101select convert(varchar, getdate(), 101)mm/dd/yyyy12/30/2022
102select convert(varchar, getdate(), 102)yyyy.mm.dd2022.12.30
103select convert(varchar, getdate(), 103)dd/mm/yyyy30/12/2022
104select convert(varchar, getdate(), 104)dd.mm.yyyy30.12.2022
105select convert(varchar, getdate(), 105)dd-mm-yyyy30-12-2022
106select convert(varchar, getdate(), 106)dd Mon yyyy30 Dec 2022
107select convert(varchar, getdate(), 107)Mon dd, yyyyDec 30, 2022
110select convert(varchar, getdate(), 110)mm-dd-yyyy12-30-2022
111select convert(varchar, getdate(), 111)yyyy/mm/dd2022/12/30
112select convert(varchar, getdate(), 112)yyyymmdd20221230
 
TIME ONLY FORMATS
8select convert(varchar, getdate(), 8)hh:mm:ss00:38:54
14select convert(varchar, getdate(), 14)hh:mm:ss:nnn00:38:54:840
24select convert(varchar, getdate(), 24)hh:mm:ss00:38:54
108select convert(varchar, getdate(), 108)hh:mm:ss00:38:54
114select convert(varchar, getdate(), 114)hh:mm:ss:nnn00:38:54:840
 
DATE & TIME FORMATS
0select convert(varchar, getdate(), 0)Mon dd yyyy hh:mm AM/PMDec 30 2022 12:38AM
9select convert(varchar, getdate(), 9)Mon dd yyyy hh:mm:ss:nnn AM/PMDec 30 2022 12:38:54:840AM
13select convert(varchar, getdate(), 13)dd Mon yyyy hh:mm:ss:nnn AM/PM30 Dec 2022 00:38:54:840AM
20select convert(varchar, getdate(), 20)yyyy-mm-dd hh:mm:ss2022-12-30 00:38:54
21select convert(varchar, getdate(), 21)yyyy-mm-dd hh:mm:ss:nnn2022-12-30 00:38:54.840
22select convert(varchar, getdate(), 22)mm/dd/yy hh:mm:ss AM/PM12/30/22 12:38:54 AM
25select convert(varchar, getdate(), 25)yyyy-mm-dd hh:mm:ss:nnn2022-12-30 00:38:54.840
26select convert(varchar, getdate(), 26)yyyy-dd-mm hh:mm:ss:nnn2022-30-12 00:38:54.840
27select convert(varchar, getdate(), 27)mm-dd-yyyy hh:mm:ss:nnn12-30-2022 00:38:54.840
28select convert(varchar, getdate(), 28)mm-yyyy-dd hh:mm:ss:nnn12-2022-30 00:38:54.840
29select convert(varchar, getdate(), 29)dd-mm-yyyy hh:mm:ss:nnn30-12-2022 00:38:54.840
30select convert(varchar, getdate(), 30)dd-yyyy-mm hh:mm:ss:nnn30-2022-12 00:38:54.840
100select convert(varchar, getdate(), 100)Mon dd yyyy hh:mm AM/PMDec 30 2022 12:38AM
109select convert(varchar, getdate(), 109)Mon dd yyyy hh:mm:ss:nnn AM/PMDec 30 2022 12:38:54:840AM
113select convert(varchar, getdate(), 113)dd Mon yyyy hh:mm:ss:nnn30 Dec 2022 00:38:54:840
120select convert(varchar, getdate(), 120)yyyy-mm-dd hh:mm:ss2022-12-30 00:38:54
121select convert(varchar, getdate(), 121)yyyy-mm-dd hh:mm:ss:nnn2022-12-30 00:38:54.840
126select convert(varchar, getdate(), 126)yyyy-mm-dd T hh:mm:ss:nnn2022-12-30T00:38:54.840
127select convert(varchar, getdate(), 127)yyyy-mm-dd T hh:mm:ss:nnn2022-12-30T00:38:54.840
 
ISLAMIC CALENDAR DATES
130select convert(nvarchar, getdate(), 130)dd mmm yyyy hh:mi:ss:nnn AM/PMdate output
131select convert(nvarchar, getdate(), 131)dd mmm yyyy hh:mi:ss:nnn AM/PM10/12/1444 12:38:54:840AM


您还可以在不分割字符的情况下格式化日期或时间,以及连接日期和时间字符串:

ample statementFormatOutput
select replace(convert(varchar, getdate(),101),'/','')mmddyyyy12302022
select replace(convert(varchar, getdate(),101),'/','') + replace(convert(varchar, getdate(),108),':','')mmddyyyyhhmmss12302022004426


如果要获取所有有效日期和时间格式的列表,可以使用 代码,并将@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




















「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论