SQL--DateADD() 和datediff()的妙用

来源:互联网 发布:淘宝怎么刷关键词2017 编辑:程序博客网 时间:2024/04/30 14:03

/*************************************************
**作者:万泽贵
**时间:2009-02-03
**理由:自己整理和网上收集,方便学习

**************************************************/
/*
convert(varchar(10),字段名,转换格式)
说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.
*/
/*
DATADIFF(间隔参数,起始日期,末期日期)
间隔参数:year,month,week,day,quarter 等
*/
/*
DATEADD(添加参数,间隔时间段,所在日期添加)
DATEADD(YEAR,2,2008-01-01')
在2008-01-01日期的年份上添加2年
结果:2010-01-01
DATEADD(MM,3,2008-01-01)
在2008-01-01日期的月份上添加2月
结果:2008-03-01
*/
SELECT DATEDIFF(YEAR,0,GETDATE())--与1900-01-01日期相差的年份!
select dateadd(wk,DATEDIFF(wk,0,pmc要求完成日期),0) as 星期一 FROM MimiERP..v_report_orderbyall where PMC要求完成日期 is not null
select DATEDIFF(mm,0,getdate())--返回与0(1900-01-01)间隔多少月
Select DATEADD(mm, DATEDIFF(mm,0,'2009-03-5'),'1900-1-31') --返回 当前月的最后一天
Select DATEADD(mm, DATEDIFF(mm,0,'2009-03-5'),'1900-1-1') --返回 当前月的第一天
select DATEDIFF(WK,0,GETDATE())
select DATEADD(wk,DATEDIFF(WK,0,GETDATE()),0)--//返回当前日期当前所属周的第一天-monday
select DATEADD(wk,DATEDIFF(WK,0,GETDATE()),6)--返回当前日期当前所属周的周末-sunday
/*
一年的第一天

现在用年(yy)的时间间隔来显示这一年的第一天。
*/
  Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
/*
  季度的第一天

  假如你要计算这个季度的第一天,这个例子告诉你该如何做。
*/

  Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
/*
  当天的半夜

  曾经需要通过getdate()函数为了返回时间值截掉时间部分,就会考虑到当前日期是不是在半夜。假如这样,这个例子使用DATEDIFF和DATEADD函数来获得半夜的时间点。
 */ 
Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) --返回凌晨

Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) ----返回季度的第一天

Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) --返回上年的最后一天,利用减3MS毫秒获得
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()),-1)--返回上年的最后一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))--获取本年的最后一天,利用减3MS毫秒获得
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate())+1,-1)--返回上年的最后一天,获取明年的头一天,再减一天获得

原创粉丝点击