问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SQL Server中实现时间转换的3种方法总结

创作时间:
作者:
@小白创作中心

SQL Server中实现时间转换的3种方法总结

引用
1
来源
1.
https://www.zhanid.com/biancheng/2862.html

在数据库操作中,时间转换是一个常见的需求。无论是将字符串转换为日期时间格式,还是将日期时间格式转换为字符串,都需要灵活运用各种时间转换函数。SQL Server作为一款功能强大的关系型数据库管理系统,提供了多种时间转换的方法。本文将详细介绍SQL Server中实现时间转换的三种常用方法,帮助读者更好地掌握这一技能。

第一种:FORMAT

FORMAT函数可以将日期时间格式化为指定的字符串格式。以下是一些常用的示例:

-- 转化成年月日
select format( GETDATE(),'yyyy-MM-dd')

-- 转化年月日,时分秒,这里的HH指24小时的,hh是12小时的
select format( GETDATE(),'yyyy-MM-dd HH:mm:ss')

-- 转化成时分秒的,这里就不一样的,需要反斜杠来转化,所以要记一下
select format(GETDATE(),'HH\\:mm\\:ss')

第二种:CONVERT

CONVERT函数可以将日期时间转换为指定格式的字符串。它支持多种预定义的格式代码,以下是一些示例:

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

第三种:DATEADD()

DATEADD函数用于在指定的日期时间上增加或减少指定的时间间隔。其语法如下:

DATEADD(datepart, number, date)

参数说明:

  • date 参数是合法的日期表达式,类型可以是datetime、smalldatetime、char。
  • number 是您希望添加的间隔数,最好是整数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
  • datepart 参数可以是下面表格的值。
datepart
年份(year)
yy , yyyy , year
季度(quarter)
qq , q , quarter
月份(month)
mm , m , month
年中的日(day of year)
dy, y
日(day)
dd , d , day
周(week)
wk , ww , week
星期(weekday)
dw, w
小时(hour)
hh , hour
分钟(minute)
mi , n , minute
秒(second)
ss , s , second
毫秒(millisecond
ms
微秒(microsecond)
mcs
纳秒(nanosecond)
ns

以下是DATEADD函数的具体使用示例:

实现秒加减

-- 减100秒
SELECT DATEADD(ss, -100, '2024-07-03')
SELECT DATEADD(s, -100, '2024-07-03')
SELECT DATEADD(second, -100, '2024-07-03')

-- 加100秒
SELECT DATEADD(ss, 100, '2024-07-03')
SELECT DATEADD(s, 100, '2024-07-03')
SELECT DATEADD(second, 100, '2024-07-03')

实现分钟加减

-- 减1分钟
SELECT DATEADD(mi, -1, '2024-07-03')
SELECT DATEADD(n, -1, '2024-07-03')
SELECT DATEADD(minute, -1, '2024-07-03')

-- 加1分钟
SELECT DATEADD(mi, 1, '2024-07-03')
SELECT DATEADD(n, 1, '2024-07-03')
SELECT DATEADD(minute, 1, '2024-07-03')

实现小时加减

-- 减1小时
SELECT DATEADD(hh, -1, '2024-07-03')
SELECT DATEADD(hour, -1, '2024-07-03')

-- 加1小时
SELECT DATEADD(hh, 1, '2024-07-03')
SELECT DATEADD(hour, 1, '2024-07-03')

实现日加减

-- 减1天
SELECT DATEADD(dd, -1, '2024-07-03')
SELECT DATEADD(d, -1, '2024-07-03')
SELECT DATEADD(day, -1, '2024-07-03')

-- 加1天
SELECT DATEADD(dd, 1, '2024-07-03')
SELECT DATEADD(d, 1, '2024-07-03')
SELECT DATEADD(day, 1, '2024-07-03')

实现周加减

-- 减1周
SELECT DATEADD(ww, -1, '2024-07-03')
SELECT DATEADD(wk, -1, '2024-07-03')
SELECT DATEADD(week, -1, '2024-07-03')

-- 加1周
SELECT DATEADD(ww, 1, '2024-07-03')
SELECT DATEADD(ww, 1, '2024-07-03')
SELECT DATEADD(ww, 1, '2024-07-03')

实现月份加减

-- 减1月
SELECT DATEADD(m, -1, '2024-07-03')
SELECT DATEADD(mm, -1, '2024-07-03')
SELECT DATEADD(month, -1, '2024-07-03')

-- 加1月
SELECT DATEADD(m, 1, '2024-07-03')
SELECT DATEADD(mm, 1, '2024-07-03')
SELECT DATEADD(month, 1, '2024-07-03')

实现季度加减

-- 减1季度
SELECT DATEADD(q, -1, '2024-07-03')
SELECT DATEADD(qq, -1, '2024-07-03')
SELECT DATEADD(quarter, -1, '2024-07-03')

-- 加1季度
SELECT DATEADD(q, 1, '2024-07-03')
SELECT DATEADD(qq, 1, '2024-07-03')
SELECT DATEADD(quarter, 1, '2024-07-03')

实现年份加减

-- 减1年
SELECT DATEADD(yy, -1, '2024-07-03')
SELECT DATEADD(yyyy, -1, '2024-07-03')
SELECT DATEADD(year, -1, '2024-07-03')

-- 加1年
SELECT DATEADD(yy, 1, '2024-07-03')
SELECT DATEADD(yyyy, 1, '2024-07-03')
SELECT DATEADD(year, 1, '2024-07-03')

总结

通过本文的介绍,我们可以看到SQL Server中实现时间转换的三种常用方法:CONVERT函数、DATEADD函数和FORMAT函数。每种方法都有其独特的优点和适用场景。掌握这些时间转换技巧,将有助于我们在实际工作中编写出更加高效和简洁的SQL代码。希望本文的内容能够对读者有所帮助,欢迎大家在评论区分享自己的经验和见解。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号