关于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的使用方法相关推荐

  1. SQL中DATEADD和DATEDIFF的使用方法

    DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期,DATEDIFF函数计算两个日期之间的小时.天.周.月.年等时间间隔总数. 1.SQL Server DATEADD() 函数 定义 ...

  2. SQL中DATEADD和DATEDIFF的用法

    通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...

  3. sql dateadd 和datediff的用法

    每日一SQL-善用DATEADD和DATEDIFF 上個星期去Tech-Day聽了幾場有趣的課,其中一堂是楊志強老師的 "深入了解T-SQL",講的很棒,雖然是第一堂八點四十的課, ...

  4. DATEADD(Day, DATEDIFF(Day,0,ShippingTime), 0)

    select DATEADD(Day, DATEDIFF(Day,0,GETDATE()), 0),DATEDIFF(Day,0,GETDATE()),GETDATE() 结果: (无列名) (无列名 ...

  5. sqlserver中的dateadd和datediff

    1.获取当前日期 -- 1.获取当前日期 select GETDATE() -- 2.获取当前日期并格式化 select CONVERT(varchar(10),GETDATE(),120) -- 3 ...

  6. mysql sql dateadd_在SQL语句中DATEADD和DATEDIFF函数

    在SQL语句中DATEADD和DATEDIFF函数 DateAdd函数 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, ...

  7. 什么是SQL Server DATEDIFF()方法?

    Hey, folks! In this article, we will be focusing on SQL Server DATEDIFF() function in detail. 嘿伙计! 在 ...

  8. mysql2000日期加减,SQL日期处理函数DATEADD和DATEDIFF详解

    SQL Server数据库中,DATETIME和SMALLDATETIME的值是存储为整数的.虽然如此,SQL Server数据库并不因此支持对这两种类型的值做数学运算. 不过,我们一定会有给日期或时 ...

  9. 日期函数之Dateadd、Datediff

    1.Dateadd 和 Date diff 经常混合使用 Dateadd(year/month/day,n,指定日期) Datediff(year/month/day,start_date,end_d ...

最新文章

  1. Apache Kafka-消费端_批量消费消息的核心参数及功能实现
  2. 百练OJ:2701:与7无关的数
  3. 【虚拟化实战】Cluster设计之一资源池
  4. HTMLCSS 超简单的前端设计入门-1!
  5. 2015蓝桥杯省赛---java---B---3(三羊献瑞)
  6. must override a superclass method
  7. 嵌入式C/C++开发过程中日志输出的一点思考
  8. 2091操作系统引论
  9. 我的 Java 自学之路
  10. Tomcat 7 部署和配置
  11. 计算机的有关英语单词大全,与计算机相关的英语词汇汇总
  12. javascript基础知识练习题
  13. 人工智能知识全面讲解:最简单的神经元模型
  14. 如何零基础创建自己的微信小程序
  15. 因果分析系列2--随机试验
  16. Oracle RAC集群安装,从零开始
  17. WEB前端性能优化,提高页面加载速度
  18. php 字符串编码方式转换,PHP 字符串编码的转换
  19. android 打开系统键盘的方法
  20. SLIC与目前最优超像素算法的比较

热门文章

  1. 公务员面试七大忌讳(1)
  2. 京东商城暂停所有地铁自提点:或因租金成本高
  3. CoppeliaSim基础:页面、视图、可视对象(相机/视觉传感器)
  4. 汉语编程能给我们带来什么?
  5. ROS实践3:publisher模板教程
  6. 单路D触发器做自锁开关
  7. Altium designer中原理图导入PCB元器件没有网络标号的几种可能原因
  8. opencv光线补偿_光线补偿算法的实现
  9. 5.22 阿博茨科技 面试总结
  10. 免费下载思科CCNP 642-861考试题库