关于dateadd与datediff的使用方法
关于dateadd与datediff的使用方法
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 OrderId,
DATEADD(day,2,OrderDate)AS OrderPayDate
FROM Orders
结果:
OrderId | OrderPayDate |
---|---|
1 | 2008-12-31 16:25:46.635 |
2、SQL Server DATEDIFF() 函数
ver DATE
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 |
实例
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果:
DiffDate |
---|
1 |
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate |
---|
-1 |
3、DATEADD和DATEDIFF可以组合获取指定时间。
DATEADD(datepart,number,date)SELECT OrderId,DATEADD(day,2,OrderDate)AS OrderPayDate
FROM Orders# 本月的第一天: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,@本年第一天)
一天是星期几=DATEPART(dw,DATEADD(ms,0,DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0)))
set @Week=1–今年第一周
select DATEADD(day,(@Week-1)*7-@本年第一天是星期几+2,@本年第一天)
关于dateadd与datediff的使用方法相关推荐
- SQL中DATEADD和DATEDIFF的使用方法
DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期,DATEDIFF函数计算两个日期之间的小时.天.周.月.年等时间间隔总数. 1.SQL Server DATEADD() 函数 定义 ...
- SQL中DATEADD和DATEDIFF的用法
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...
- sql dateadd 和datediff的用法
每日一SQL-善用DATEADD和DATEDIFF 上個星期去Tech-Day聽了幾場有趣的課,其中一堂是楊志強老師的 "深入了解T-SQL",講的很棒,雖然是第一堂八點四十的課, ...
- DATEADD(Day, DATEDIFF(Day,0,ShippingTime), 0)
select DATEADD(Day, DATEDIFF(Day,0,GETDATE()), 0),DATEDIFF(Day,0,GETDATE()),GETDATE() 结果: (无列名) (无列名 ...
- sqlserver中的dateadd和datediff
1.获取当前日期 -- 1.获取当前日期 select GETDATE() -- 2.获取当前日期并格式化 select CONVERT(varchar(10),GETDATE(),120) -- 3 ...
- mysql sql dateadd_在SQL语句中DATEADD和DATEDIFF函数
在SQL语句中DATEADD和DATEDIFF函数 DateAdd函数 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, ...
- 什么是SQL Server DATEDIFF()方法?
Hey, folks! In this article, we will be focusing on SQL Server DATEDIFF() function in detail. 嘿伙计! 在 ...
- mysql2000日期加减,SQL日期处理函数DATEADD和DATEDIFF详解
SQL Server数据库中,DATETIME和SMALLDATETIME的值是存储为整数的.虽然如此,SQL Server数据库并不因此支持对这两种类型的值做数学运算. 不过,我们一定会有给日期或时 ...
- 日期函数之Dateadd、Datediff
1.Dateadd 和 Date diff 经常混合使用 Dateadd(year/month/day,n,指定日期) Datediff(year/month/day,start_date,end_d ...
最新文章
- Apache Kafka-消费端_批量消费消息的核心参数及功能实现
- 百练OJ:2701:与7无关的数
- 【虚拟化实战】Cluster设计之一资源池
- HTMLCSS 超简单的前端设计入门-1!
- 2015蓝桥杯省赛---java---B---3(三羊献瑞)
- must override a superclass method
- 嵌入式C/C++开发过程中日志输出的一点思考
- 2091操作系统引论
- 我的 Java 自学之路
- Tomcat 7 部署和配置
- 计算机的有关英语单词大全,与计算机相关的英语词汇汇总
- javascript基础知识练习题
- 人工智能知识全面讲解:最简单的神经元模型
- 如何零基础创建自己的微信小程序
- 因果分析系列2--随机试验
- Oracle RAC集群安装,从零开始
- WEB前端性能优化,提高页面加载速度
- php 字符串编码方式转换,PHP 字符串编码的转换
- android 打开系统键盘的方法
- SLIC与目前最优超像素算法的比较