DATEDIFF 和 DATEADD
/*
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的更多相关文章
- C# DateDiff与DateAdd
原文地址:http://www.wlm.so/Article/Detail/lmb49q5hxpqyi00000 刚刚在百度上搜C#里面的DateDiff,一看吓一跳,C#没有这个函数. 还有各种自定 ...
- DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数
DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.FORMAT函数 DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.Format函数 KeyLife富翁笔 ...
- SQL Server 日期的加减函数: DATEDIFF DATEADD
SQL Server 日期的加减函数: DATEDIFF DATEADD DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , st ...
- sqlserver -- 学习笔记(五)查询一天、一周、一个月记录(DateDiff 函数)(备忘)
Learn From : http://bjtdeyx.iteye.com/blog/1447300 最常见的sql日期查询的语句 --查询当天日期在一周年的数据 ) --查询当天的所有数据 ) -- ...
- SQL DATEDIFF语法及时间函数 Sql 查询当天、本周、本月记录
SQL DATEDIFF语法及时间函数 Sql 查询当天.本周.本月记录 转:http://blog.csdn.net/Json1204/article/details/7863801?locatio ...
- 你真的会玩SQL吗?实用函数方法汇总
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- SQL函数说明大全
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...
- SQL 查找重复项及批量修改数据成固定格式
1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from ...
- 【原创】SQL常用函数
--值类型转换 ) --时间差 ,GETDATE()),GETDATE()) --加减指定时间 ,GETDATE()) --获取系统日期 select GETDATE() --生成不重复Id sele ...
随机推荐
- [Leetcode] 863. All Nodes Distance K in Binary Tree_ Medium tag: BFS, Amazon
We are given a binary tree (with root node root), a target node, and an integer value `K`. Return a ...
- 机器学习理论基础学习3.3--- Linear classification 线性分类之logistic regression(基于经验风险最小化)
一.逻辑回归是什么? 1.逻辑回归 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的. logistic回归也称为逻辑回归,与线性回归这样输出 ...
- 020-安装centos6.5后的生命历程
01.配置网络.修改了ifcfg-eth0文件内容. 1)ifcfg-eth0原来的内容如下: 2)ifcfg-eth0配置后的内容如下: 3)然后重启网络服务: 4)测试网络是否可通: 5)查看 ...
- 2:5 视图控制器result的配置
result: 1:其实底层还是使用原来servlet的转发和重定向的方法: 2:redirectAction:只能定位到 action (比如下面name属性为 *User 的Action ,但 ...
- apache源码安装
1.apr和apr-util,下载地址: http://apr.apache.org/download.cgi yum install gcc yum install libtool yum inst ...
- Linux root用户下强制静音的问题
解决方法 pulseaudio --start --log-target=syslog suorce /etc/profile
- Kafka集群监控工具之二--Kafka Eagle
基于kafka: kafka_2.11-0.11.0.0.tgz kafka-eagle-bin-1.2.1.tar.gz 1.下载解压 tar -zxvf kafka-eagle-bin-1.2.1 ...
- pm2 观察报错时 pm2 start app.js --watch
pm2 start app.js --watch[PM2][ERROR] Script already launched, add -f option to force re-execution
- python学习读取配置文件
配置文件作为一种可读性很好的格式,非常适用于存储程序中的配置数据. 在每个配置文件中,配置数据会被分组(比如“config”和 “cmd”). 每个分组在其中指定对应的各个变量值.如下: # 定义co ...
- [转] Python的import初探
转载自:http://www.lingcc.com/2011/12/15/11902/#sec-1 日常使用python编程时,为了用某个代码模块,通常需要在代码中先import相应的module.那 ...