sqlserver 日期与字符串之间的转换

本文详细介绍SQL Server中日期和时间的转换、操作与处理方法,包括日期时间转字符串、使用日期与时间函数进行加减运算、获取日期部分等,是SQL日期时间处理的实用指南。

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

1、日期时间转字符串
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

2、Sql Server日期与时间函数

  1. 当前系统日期、时间

select getdate()

  1. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值

例如:向日期加上2天

select dateadd(day,2,‘2004-10-15’) --返回:2004-10-17 00:00:00.000

  1. datediff 返回跨两个指定日期的日期和时间边界数。

select datediff(day,‘2004-09-01’,‘2004-09-18’) --返回:17

  1. datepart 返回代表指定日期的指定日期部分的整数。

SELECT DATEPART(month, ‘2004-10-15’) --返回 10

  1. datename 返回代表指定日期的指定日期部分的字符串

SELECT datename(weekday, ‘2004-10-15’) --返回:星期五

  1. day(), month(),year() --可以与datepart对照一下

select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114)

select datename(dw,‘2004-10-15’)

select 本年第多少周=datename(week,‘2004-10-15’),今天是周几=datename(weekday,‘2004-10-15’)

3、SQL Server日期函数 参数/功能

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 q 季 1 ~ 4

Month Mm m 月1 ~ 12

Day of year Dy y 一年的日数,一年中的第几日 1-366

Day Dd d 日,1-31

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

Week Wk ww 周,一年中的第几周 0 ~ 51

Hour Hh h 时0 ~ 23

Minute Mi n 分钟0 ~ 59

Second Ss s 秒 0 ~ 59

Millisecond Ms - 毫秒 0 ~ 999

Access 和Asp中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似。

4、SQL Server日期函数举例

1.GetDate() 用于sql server :select GetDate()

2.DateDiff(‘s’,‘2005-07-20’,‘2005-7-25 22:56:32’)返回值为 514592 秒

DateDiff(‘d’,‘2005-07-20’,‘2005-7-25 22:56:32’)返回值为 5 天

3.DatePart(‘w’,‘2005-7-25 22:56:32’)返回值为 2 即星期一(周日为1,周六为7)

DatePart(‘d’,‘2005-7-25 22:56:32’)返回值为 25即25号

DatePart(‘y’,‘2005-7-25 22:56:32’)返回值为 206即这一年中第206天

DatePart(‘yyyy’,‘2005-7-25 22:56:32’)返回值为 2005即2005年

### SQL Server 中日期字符串的方法 在 SQL Server 数据库中,可以通过 `CONVERT` 和 `CAST` 函数实现日期字符串转换。以下是详细的说明: #### 1. 使用 `CONVERT` 函数 `CONVERT` 是一种功能强大的函数,允许用户通过指定样式参数来控制日期格式化的输出形式。例如,如果需要将当前日期格式化为 `[年/月/日]` 的格式,则可以使用以下语句[^1]: ```sql SELECT CONVERT(varchar(100), GETDATE(), 111); ``` 此查询会返回类似于 `'2023/03/15'` 这样的结果。 对于其他常见的日期格式,也可以通过更改样式参数来调整输出。例如: - 格式为 `'YYYY-MM-DD'` (ISO 8601)[^3]: ```sql SELECT CONVERT(varchar(10), GETDATE(), 120); ``` - 格式为 `'MM/DD/YYYY'`: ```sql SELECT CONVERT(varchar, GETDATE(), 101); ``` - 格式为 `'DD/MM/YYYY'`: ```sql SELECT CONVERT(varchar, GETDATE(), 103); ``` 完整的样式列表可以在官方文档或其他参考资料中找到[^2]。 #### 2. 使用 `CAST` 函数 虽然 `CAST` 可以完成基本的数据类型转换操作,但它不支持自定义格式化选项。默认情况下,它将以标准的 ISO 格式 (`YYYY-MM-DD`) 返回日期部分: ```sql SELECT CAST(GETDATE() AS varchar(10)); ``` 需要注意的是,当仅需提取日期而忽略时间时,建议显式设置长度或使用更精确的方式处理数据。 #### 3. 判断日期字符串是否包含时间信息 为了验证某个日期字符串是否存在具体的时间成分,可借助于 T-SQL 提供的功能组合,比如利用 `CONVERT` 或者 `TRY_CONVERT` 来尝试解析并比较原始输入截断后的版本差异。 --- ### 示例代码总结 下面是一些常用的日期字符串的例子及其对应的输出效果: ```sql -- 当前日期按不同风格展示 SELECT CONVERT(varchar, GETDATE(), 111) AS YYYY_MM_DD_JP; -- 日本风格 'YYYY/MM/DD' SELECT CONVERT(varchar, GETDATE(), 101) AS MM_DD_YYYY_USA; -- 美国风格 'MM/DD/YYYY' SELECT CONVERT(varchar, GETDATE(), 103) AS DD_MM_YYYY_UK; -- 英国风格 'DD/MM/YYYY' -- 基础转换无特别格式限定 SELECT CAST(GETDATE() AS VARCHAR(10)) AS DefaultFormat; ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值