sql server Convert日期处理

本文介绍如何在SQL Server中使用CONVERT函数结合CASE WHEN语句实现特定日期格式的转换,特别是将AM/PM转换为午前/午后。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般在sql server 中对日期进行处理都会使用Convert 函数。但是在对日开发中,am 或者 pm 需要显示成 (午前)(午後)。这时用sql server 的convert函数不能直接满足要求,需要通过case when 搭配其他函数来获取这种日期格式。详细方法如下:

select GETDATE(),CONVERT(nvarchar(100),getdate(),120) + CASE WHEN RIGHT(CONVERT(nvarchar(100),getdate(),100),2)='PM' THEN N' 午後' else N' 午前' end
查询结果如下:2018-04-16 15:59:58.637 2018-04-16 15:59:58 午後。

不带世纪数位 (yy)带世纪数位 (yyyy)
标准

输入/输出**
-0 或 100 (*)默认值mon dd yyyy hh:miAM(或 PM)
1101美国mm/dd/yyyy
2102ANSIyy.mm.dd
3103英国/法国dd/mm/yy
4104德国dd.mm.yy
5105意大利dd-mm-yy
6106-dd mon yy
7107-mon dd, yy
8108-hh:mm:ss
-9 或 109 (*)默认值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10110美国mm-dd-yy
11111日本yy/mm/dd
12112ISOyymmdd
-13 或 113 (*)欧洲默认值 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)
14114-hh:mi:ss:mmm(24h)
-20 或 120 (*)ODBC 规范yyyy-mm-dd hh:mm:ss[.fff]
-21 或 121 (*)ODBC 规范(带毫秒)yyyy-mm-dd hh:mm:ss[.fff]
-126(***)ISO8601yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
-130*科威特dd mon yyyy hh:mi:ss:mmmAM
-131*科威特dd/mm/yy hh:mi:ss:mmmAM

SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006

  Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827

  Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM

  Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM


### SQL Server 中使用 CONVERT 函数进行日期格式转换 在 SQL Server 中,`CONVERT()` 函数用于将一种数据类型转换为另一种数据类型。对于日期和时间的数据类型转换,此函数特别有用。 #### 语法结构 该函数的一般形式如下: ```sql CONVERT(data_type[(length)], expression [, style]) ``` 其中 `data_type` 是目标数据类型;`expression` 表达式是要被转换的内容;而可选参数 `style` 则指定了特定于日期或时间表达式的格式样式[^1]。 #### 转换实例 下面给出几个具体例子来说明不同风格代码下的日期字符串到 DATE 类型的转变方式: - **ISO8601 格式** 当设置样式码为 23 (`yyyy-mm-dd`)处理 ISO8601 形式的输入时: ```sql SELECT CONVERT(DATE, '2023-10-01', 23) AS ConvertedDate; ``` - **美国短日期格式** 对于美式 mm/dd/yyyy 的表示方法,则应采用 101 风格编码: ```sql SELECT CONVERT(DATE, '10/01/2023', 101) AS ConvertedDate; ``` - **英国/法国标准写法** 若要解析 dd/mm/yyyy 这样的欧洲常见模式,可以选用 103 号样例: ```sql SELECT CONVERT(DATE, '01/10/2023', 103) AS ConvertedDate; ``` - **无分隔符 YYYYMMDD** 如果遇到不带任何间隔字符连接年月日的情况(即 yyyymmdd),则推荐应用 112 编号作为模板: ```sql SELECT CONVERT(DATE, '20231001', 112) AS ConvertedDate; ``` 通过上述命令可以看出,在指定相应格式后,SQL Server 将能够正确识别并解释给定的字符串值,并将其转化为相应的日期对象[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值