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 ...
随机推荐
- Django 连接redis方法
1. 按照redis模块 # 在cmd中 pip3 install redis 2. 测试代码 插入单挑数据 import redis conn = redis.Redis(host='10.0.0. ...
- Linux系统——JumpServer跳板机的搭建和部署
公网源部署jumpserver跳板机 建立阿里云公网源yum仓库(服务端)[root@localhost ~]# lsanaconda-ks.cfg install.log.syslog jumpse ...
- How To View the HTML Source in Google Chrome
Whether you are new to the web industry or a seasoned veteran, viewing the HTML source of different ...
- HZNU_TI1050 训练实录
菜鸡队训练实录 比赛记录:[名称:奖项 / 排名] 2018: ZJPSC Bronze / 86 CCPC Jilin ...
- Java8函数接口实现回调及Groovy闭包的代码示例
本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场景: 主体流程是不变的,变的只是其中要调用的具体方法. 其特征是: Begi ...
- linux常用命令:sudo 命令
sudo命令用来以其他身份来执行命令,预设的身份为root. 1.命令格式: sudo [参数] [命令] 2.命令功能: 功能: sudo可以针对单个命令授予临时权限.用户也可以通过su切换到 ...
- Python Web学习笔记之socket套接字
套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信 ...
- Python字典猜解
摘要 目标 使用Python破解WordPress用户密码 使用Python破解zip压缩包密码 思路 通过表单提交项构建数据包,使用字典中的可选字符进行逐一排列组合暴力破解WordPress的用户密 ...
- [VS 2015] VS2015 完整ISO镜像包
区别 :https://www.visualstudio.com/zh-cn/products/compare-visual-studio-2015-products-vs 完整ISO镜像:下载 VS ...
- luogu P3387 【模板】缩点
题目 好久没法博客了 这次就水个板子题目吧 tarjan缩点之后重新建图 而且边权应该都是正的(要不我怎么能这么轻松水过去) 在新图上记忆化一下就好了 f[i] 表示 开头选i这个点 的 路径最大值 ...