SQLServer 日期格式(转)

本文介绍SQL Server中使用CONVERT函数进行日期格式转换的方法,并列举了多种常见格式及其对应国家和地区。此外,还提供了日期和时间相关函数的用法,帮助读者更好地理解和应用。

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

--日期格式转换:
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(), 23)	   --2017-03-16 
Select CONVERT(varchar(100), GETDATE(), 112)	   --20170316
Select CONVERT(varchar(100), GETDATE(), 120)	   --2017-03-16 11:32:55


--各国指定日期格式:
SELECT CONVERT(varchar(10),getdate(),120)

	101			美国		mm/dd/yyyy 
	102			ANSI		yy.mm.dd 
	103			英国/法国	dd/mm/yy 
	104			德国		dd.mm.yy 
	105			意大利		dd-mm-yy 
	106						dd mon yy 
	107						mon dd, yy 
	108						hh:mm:ss 
	109						mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
	110			美国		mm-dd-yy 
	111			日本		yy/mm/dd 
	112			ISO			yymmdd 
	113						毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 
	114						hh:mi:ss:mmm(24h) 
	120						yyyy-mm-dd hh:mm:ss[.fff] 
	121						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


日期函数:

函数

参数/功能

GetDate( )

返回系统目前的日期与时间

DateDiff (interval,date1,date2)

以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1

DateAdd (interval,number,date)

以interval指定的方式,加上number之后的日期

DatePart (interval,date)

返回日期date中,interval指定部分所对应的整数值

DateName (interval,date)

返回日期date中,interval指定部分所对应的字符串名称


interval 参考值:

缩 写(Sql Server)

Access 和 ASP

说明

Year

Yy

yyyy

年 1753 ~ 9999

Quarter

Qq

季 1 ~ 4

Month

Mm

月1 ~ 12

Day of year

Dy

y

一年的日数,一年中的第几日 1-366

Day

Dd

日,1-31

Weekday

Dw

w

一周的日数,一周中的第几日 1-7

Week

Wk

ww

周,一年中的第几周 0 ~ 51

Hour

Hh

时0 ~ 23

Minute

Mi

分钟0 ~ 59

Second

Ss

s

秒 0 ~ 59

Millisecond

Ms

-

毫秒 0 ~ 999



SELECT SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
,GETDATE()
,GETUTCDATE();


日期和时间数据类型及函数 (Transact-SQL)




### SQL Server 中进行日期格式换 在 SQL Server 中,`CONVERT` 和 `CAST` 函数用于执行数据类型的显式换。对于日期格式换,最常用的是 `CONVERT` 函数。 #### 使用 CONVERT 进行日期格式化 通过指定不同的样式参数,可以将 `datetime` 类型的数据按照特定格式显示。例如: ```sql -- 将当前日期时间按美国标准日期格式 (mm/dd/yyyy) 显示 SELECT CONVERT(varchar, GETDATE(), 101); -- 输出类似于:05/23/2023 ``` 不同风格编号对应着各种国际化的日期表示方法[^3]。 #### 自定义日期字符串到 datetime 的换 当需要把自定义格式的字符串解析成 `datetime` 对象时,同样依赖于 `CONVERT` 或者更推荐使用的 `PARSENAME` 及 `TRY_PARSE` 函数来处理复杂情况下的输入验证。 #### 获取日期组件并构建新格式 如果目标不是直接应用预设模式而是组合新的布局,则可以通过单独获取年份、月份等组成部分再拼接起来实现个性化定制: ```sql -- 提取年、月、日作为独立列返回 SELECT YEAR(GETDATE()) AS YearPart, MONTH(GETDATE()) AS MonthPart, DAY(GETDATE()) AS DayPart; ``` 此外,还可以利用这些函数创建复合表达式的输出形式满足具体业务需求[^2]。 #### 时间戳与 Unix 时间之间的互 有时会涉及到跨平台操作或是与其他系统交互的需求,在这种情况下可能需要用到从常规日期时间向Unix时间戳(即自1970-01-01起始计算的毫秒数)或者相反方向上的变换逻辑: ```sql -- 当前时刻距离 epoch time 已经过了多少微秒 SELECT DATEDIFF_BIG(MICROSECOND,'1970-01-01T00:00:00Z', SYSDATETIMEOFFSET()); -- 把给定的 unix timestamp 换成 sql server 支持的标准日期时间 DECLARE @unixTimestamp BIGINT = 1684838400000; -- 示例值 SELECT DATEADD(SECOND,@unixTimestamp / 1000 , CAST('1970-01-01' AS DATETIME)) ; ``` 以上展示了多种方式来进行SQL Server中的日期格式换工作,无论是简单的格式调整还是复杂的数值映射都能找到合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值