大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期,DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。
1、SQL Server DATEADD() 函数
定义和用法
DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法
DATEADD(datepart,number,date)
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart 参数可以是下列的值:
| datepart | 缩写 |
|---|---|
| 年 | yy, yyyy |
| 季度 | qq, q |
| 月 | mm, m |
| 年中的日 | dy, y |
| 日 | dd, d |
| 周 | wk, ww |
| 星期 | dw, w |
| 小时 | hh |
| 分钟 | mi, n |
| 秒 | ss, s |
| 毫秒 | ms |
| 微妙 | mcs |
| 纳秒 | ns |
实例
假设我们有下面这个 “Orders” 表:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | ‘Computer’ | 2008-12-29 16:25:46.635 |
现在,我们希望向 “OrderDate” 添加 2 天,这样就可以找到付款日期。
我们使用如下 SELECT 语句:
SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate
FROM Orders
结果:
| OrderId | OrderPayDate |
|---|---|
| 1 | 2008-12-31 16:25:46.635 |
date也可以使用函数,比如今天是2016-02-21.

2、SQL Server DATEDIFF() 函数
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
| datepart | 缩写 |
|---|---|
| 年 | yy, yyyy |
| 季度 | qq, q |
| 月 | mm, m |
| 年中的日 | dy, y |
| 日 | dd, d |
| 周 | wk, ww |
| 星期 | dw, w |
| 小时 | hh |
| 分钟 | mi, n |
| 秒 | ss, s |
| 毫秒 | ms |
| 微妙 | mcs |
| 纳秒 | ns |
实例
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果:
| DiffDate |
|---|
| 1 |
例子 2
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:
| DiffDate |
|---|
| -1 |
DATEADD和DATEDIFF可以组合获取指定时间。
本月的第一天:
- Select dateadd(ms,0,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) as 时间
本月的最后一天:
- Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
上个月的最后一天:
- Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) as 时间
去年的最后一天:
- Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
本年的最后一天:
- Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
2016-01-21的12个月前的那个月的第一天:
- Select dateadd(mm,-12,DATEADD(mm, DATEDIFF(mm,0,’2016-01-21′), 0)) as 时间
一年中指定周的第一天:
- DECLARE @本年第一天 datetime,@本年第一天是星期几 int,@Week int
- set @本年第一天=DATEADD(ms,0,DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0))
- set @本年第一天是星期几=DATEPART(dw,DATEADD(ms,0,DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0)))
- set @Week=1–今年第一周
- select DATEADD(day,(@Week-1)*7-@本年第一天是星期几+2,@本年第一天)
转载:https://blog.csdn.net/Gordennizaicunzai/article/details/50710130
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234677.html原文链接:https://javaforall.net
