/*
DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数
语法 DATEDIFF(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
interval 参数的设定值如下
yyyy 年
q,qq 季
m,mm 月
y 一年的日数
d,dd 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期
语法 DATEADD (datepart , number , date )
datepart 参数的设定值如下
year yy,yyyy 年
quarter qq,q 季度
month mm,m 月
dayofyear dy,y 一年的日数
day dd,d 日
week wk,ww 周
weekday dw,w 周的日数
hour hh 时
minute mi,n 分
second ss,s 秒
millisecond ms 毫秒
microsecond mcs 微妙
nanosecond ns 纳秒 0相当于'1900-1-1' 使用DATEDIFF和DATEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。
你必须从时间间隔这个方面来考虑。比如,从当前日期到你要得到的日期之间有多少时间间隔,
或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。
理解怎样着眼于时间间隔有助于你轻松的理解我的不同的日期计算例子。
*/
--本月第一天
-- 我将告诉你如何从当前日期去这个月的最后一天。
-- 每一个例子都将通过计算当前的时间间隔,然后进行加减来得到想要计算的日期 SELECT DATEDIFF(mm, 0, GETDATE())
--本月第一天
--先看1900-1-1距离当前时间有n个月,然后在让1900-1-1加上n月则等于当月第一天
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0);
--本周第一天
SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0);
--本年第一天
SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0);
--本季度第一天
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0);
--当天的半夜
SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0);
--上个月的最后一天
--它通过从一个月的最后一天这个例子上减去3毫秒来获得。有一点要记住,在SqlServer中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0));
--去年的最后一天
SELECT DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0));
--本月的最后一天
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0));
--本年的最后一天
SELECT DATEADD(ms,-3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0));
--本月的第一个星期一
SELECT DATEADD(wk,DATEDIFF(wk, 0, DATEADD(dd, 6 - DATEPART(DAY, GETDATE()), GETDATE())), 0);
 --今天的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(dd, [datetime类型字段], GETDATE()) = 0; --昨天的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(dd, [datetime类型字段], GETDATE()) = 1; --7天内的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(dd, [datetime类型字段], GETDATE())< = 7; --30天内的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(dd, [datetime类型字段], GETDATE())< = 30; --本月的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(mm, [datetime类型字段], GETDATE()) = 0; --本年的所有数据:
SELECT * FROM [Table] WHERE DATEDIFF(yy, [datetime类型字段], GETDATE()) = 0; --查询今天是今年的第几天:
SELECT DATEPART(DAYOFYEAR, GETDATE()); --查询今天是本月的第几天:
--1.
SELECT DATEPART(dd, GETDATE());
--2.
SELECT DAY(GETDATE()); --查询本周的星期一日期是多少 (注意:指定日期不能是周日,如果是周日会计算到下周一去。所以如果是周日要减一天)
SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0); --查询昨天日期:
SELECT CONVERT(CHAR, DATEADD(DD, -1, GETDATE()), 111); --111是样式号,(100-114) --查询本月第一天日期:
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS firstday; --查询本月最后一天日期:
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0)) as lastday; --修改-3的值会有相应的变化 --本月有多少天:
SELECT DATEPART(dd, DATEADD(dd, -1, DATEADD(mm,1, CAST((CAST(YEAR(GETDATE()) AS VARCHAr) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR)+'-01' ) AS DATETIME )))); --求两个时间段相差几天:
SELECT DATEDIFF(day, '2012/8/1',' 2012/8/20') as daysum;
--在指定的日期上±N天:
SELECT CONVERT(CHAR,DATEADD(dd,1,'2012/8/20'),111) as riqi; --输出2012/8/21 --在指定的日期上±N分钟:
SELECT DATEADD(mi, -15, GETDATE()); --查询当前时间15分钟之前的日期

DATEDIFF 和 DATEADD的更多相关文章

  1. C# DateDiff与DateAdd

    原文地址:http://www.wlm.so/Article/Detail/lmb49q5hxpqyi00000 刚刚在百度上搜C#里面的DateDiff,一看吓一跳,C#没有这个函数. 还有各种自定 ...

  2. DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数

    DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.FORMAT函数 DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.Format函数 KeyLife富翁笔 ...

  3. SQL Server 日期的加减函数: DATEDIFF DATEADD

    SQL Server 日期的加减函数: DATEDIFF    DATEADD DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , st ...

  4. sqlserver -- 学习笔记(五)查询一天、一周、一个月记录(DateDiff 函数)(备忘)

    Learn From : http://bjtdeyx.iteye.com/blog/1447300 最常见的sql日期查询的语句 --查询当天日期在一周年的数据 ) --查询当天的所有数据 ) -- ...

  5. SQL DATEDIFF语法及时间函数 Sql 查询当天、本周、本月记录

    SQL DATEDIFF语法及时间函数 Sql 查询当天.本周.本月记录 转:http://blog.csdn.net/Json1204/article/details/7863801?locatio ...

  6. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. SQL函数说明大全

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  8. SQL 查找重复项及批量修改数据成固定格式

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId  from ...

  9. 【原创】SQL常用函数

    --值类型转换 ) --时间差 ,GETDATE()),GETDATE()) --加减指定时间 ,GETDATE()) --获取系统日期 select GETDATE() --生成不重复Id sele ...

随机推荐

  1. python3中pymysql模块安装及连接数据库(同‘python安装HTMLTestRunner’)

    https://pypi.org/project/PyMySQL/#files 安装完成之后就是连接数据库了 机器上安装了mysql的数据库,并且已经创建了两张表用于测试 python3连接数据库及删 ...

  2. How to enable TLS 1.2 on Windows Server 2008 R2

    Problem How to enable TLS 1.2 on Windows Server 2008 R2? Resolution QuoVadis recommends enabling and ...

  3. Pycharm上python3运行unittest无法生成测试报告

    原文地址https://www.cnblogs.com/yoyoketang/p/7523409.html 前言 经常有人在群里反馈,明明代码一样的啊,为什么别人的能出报告,我的出不了报告:为什么别人 ...

  4. UVM中的regmodel建模(三)

    总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block ...

  5. 【Redis学习之九】Redis集群:Twemproxy和HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-3.0.4 主从模式对写压力没有分担,解决思路就 ...

  6. Hive四种数据导入方式介绍

    问题导读 1.从本地文件系统中通过什么命令可导入数据到Hive表? 2.什么是动态分区插入? 3.该如何实现动态分区插入? 扩展: 这里可以和Hive中的三种不同的数据导出方式介绍进行对比? Hive ...

  7. kafka监控工具

    Kafka Web Conslole Kafka Manager KafkaOffsetMonitor.

  8. 20145316许心远《网络对抗》第一次实验拓展:shellcode注入+return-to-libc

    shellcode注入实践 编写shellcode 这一部分在我上一篇日志里面已经详细讲过了,这里直接把验证合适的shellcode拿过来. \x31\xc0\x50\x68\x2f\x2f\x73\ ...

  9. bzoj5470 / P4578 [FJOI2018]所罗门王的宝藏

    P4578 [FJOI2018]所罗门王的宝藏 设第$i$行上的值改变了$r1[i]$,第$j$列上的值改变了$r2[i]$ 显然密码$(i,j,c)=r1[i]+r2[j]$ 对于同一列上的两个密码 ...

  10. bzoj1643 / P2666 [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 简单的dfs题 枚举前3个完全平方数,判断最后一个是不是完全平方数,统计合法方案数即可. (zz选手竟把数 ...