SQL日期格式化

本文介绍SQL Server中使用CONVERT函数进行日期格式化的多种方法。通过不同的样式参数,可以实现日期和时间的不同显示格式,适用于多样化的业务场景需求。
  0   或   100   (*)     默认值   mon   dd   yyyy   hh:miAM(或   PM)     
  1   101   美国   mm/dd/yyyy     
  2   102   ANSI   yy.mm.dd     
  3   103   英国/法国   dd/mm/yy     
  4   104   德国   dd.mm.yy     
  5   105   意大利   dd-mm-yy     
  6   106   -   dd   mon   yy     
  7   107   -   mon   dd,   yy     
  8   108   -   hh:mm:ss     
  -   9   或   109   (*)     默认值   +   毫秒   mon   dd   yyyy   hh:mi:ss:mmmAM(或   PM)     
  10   110   美国   mm-dd-yy     
  11   111   日本   yy/mm/dd     
  12   112   ISO   yymmdd     
  -   13   或   113   (*)     欧洲默认值   +   毫秒   dd   mon   yyyy   hh:mm:ss:mmm(24h)     
  14   114   -   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(***)   ISO8601   yyyy-mm-dd   Thh:mm:ss:mmm(不含空格)     
  -   130*   科威特   dd   mon   yyyy   hh:mi:ss:mmmAM     
  -   131*   科威特   dd/mm/yy   hh:mi:ss:mmmAM   

Sql Server 中一个非常强大的日期格式化函数
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-05-16 10:57:49.700
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

常用:
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16

SQL中CONVERT转化函数的用法
CONVERT的使用方法:
////////////////////////////////////////////////////////////////////////////////////////
格式:
CONVERT(data_type,e xpression[,style])
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
例子:
Select CONVERT(varchar(30),getdate(),101) now
结果为
now
---------------------------------------
09/15/2001
/////////////////////////////////////////////////////////////////////////////////////
style数字在转换时间时的含义如下
-------------------------------------------------------------------------------------------------
Style(2位表示年份) | Style(4位表示年份) | 输入输出格式
-------------------------------------------------------------------------------------------------
- | 0 or 100 | mon dd yyyy hh:miAM(或PM)
-------------------------------------------------------------------------------------------------
1 | 101 | mm/dd/yy
-------------------------------------------------------------------------------------------------
2 | 102 | yy-mm-dd
-------------------------------------------------------------------------------------------------
3 | 103 | dd/mm/yy
-------------------------------------------------------------------------------------------------
4 | 104 | dd-mm-yy
-------------------------------------------------------------------------------------------------
5 | 105 | dd-mm-yy
-------------------------------------------------------------------------------------------------
6 | 106 | dd mon yy
-------------------------------------------------------------------------------------------------
7 | 107 | mon dd,yy
-------------------------------------------------------------------------------------------------
8 | 108 | hh:mm:ss
-------------------------------------------------------------------------------------------------
- | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
-------------------------------------------------------------------------------------------------
10 | 110 | mm-dd-yy
-------------------------------------------------------------------------------------------------
11 | 111 | yy/mm/dd
-------------------------------------------------------------------------------------------------
12 | 112 | yymmdd
-------------------------------------------------------------------------------------------------
- | 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制)
-------------------------------------------------------------------------------------------------
14 | 114 | hh:mi:ss:mmm(24小时制)
-------------------------------------------------------------------------------------------------
- | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制)
-------------------------------------------------------------------------------------------------
- | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制
### SQL 日期格式化的常用方法 在 SQL 中,日期格式化是一个常见需求,不同数据库管理系统 (DBMS) 提供了各自的函数支持此功能。以下是几种主流 DBMS 的日期格式化方法及其示例。 #### MySQL 中的 `DATE_FORMAT` 函数 MySQL 使用 `DATE_FORMAT` 函数来进行日期格式化操作。该函数允许通过指定模式字符串来自定义输出格式。例如: ```sql -- 格式化为年月日时分秒:yyyy-MM-dd HH:mm:ss SELECT DATE_FORMAT(add_time, '%Y-%m-%d %H:%i:%S') AS formatted_add_time FROM sys_user; -- 条件查询中的日期格式化,仅匹配年月日:yyyy-MM-dd SELECT * FROM sys_user WHERE DATE_FORMAT(add_time, '%Y-%m-%d') = DATE_FORMAT('2023-10-18', '%Y-%m-%d'); ``` 上述代码展示了如何利用 `DATE_FORMAT` 对字段进行格式化以及作为查询条件的一部分[^1]。 #### Microsoft SQL Server 中的 `FORMAT` 函数 Microsoft SQL Server 支持使用 `FORMAT` 函数来处理日期和其他类型的值格式化。它提供了灵活的方式以满足多样化的显示需求。例如: ```sql -- 格式化当前时间为 yyyy-MM-dd 形式的日期 SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS FormattedDate; -- 格式化时间部分为 hh:mm:ss AM/PM 表达形式 SELECT FORMAT(GETDATE(), 'hh:mm:ss tt') AS FormattedTime; ``` 这些例子说明了 `FORMAT` 如何用于生成特定样式的日期和时间表示[^2]。 #### Oracle 数据库中的 `TO_CHAR` 函数 Oracle 数据库采用 `TO_CHAR` 函数完成类似的日期转换任务。下面的例子演示了它的应用方式: ```sql -- 将 SYSDATE 转换为 YYYY-MM-DD HH24:MI:SS 格式 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM dual; ``` 这里需要注意的是,在 Oracle 中,“HH24”代表小时制而非标准十二小时制下的 “HH”。 #### PostgreSQLSQLite 的解决方案 对于其他一些流行的 RDBMS 平台来说,它们也各自具备独特的解决办法。比如PostgreSQL 可能会依赖于其内置的时间戳类型配合提取(extract()) 或者to_char() 方法;而SQLite 则可能更多地依靠strftime() 实现相似目的: ##### PostgreSQL 示例: ```sql -- 在 PostgreSQL 下执行相同逻辑 SELECT to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') as current_formatted_datetime; ``` ##### SQLite 示例: ```sql -- 在 SQLite 上实现同等效果 SELECT strftime('%Y-%m-%d %H:%M:%S', datetime('now')) AS now_formatted; ``` 以上分别介绍了多个平台下达成一致目标的不同途径][^[^34]。 ### 总结 每种关系型数据库都有自己的语法特点去应对日期格式的需求。理解并掌握所使用的具体系统的特性是非常重要的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值