/*日期和时间处理函数
常用的日期和时间处理函数
函数 说明
dateadd() 添加日期(天,周等)
datediff() 计算两个日期的差
datename() 返回部分日期的字符串表示
datepart() 返回日期的一部分(星期几、月、年等)
day() 返回日期中的天=datepart(day,)
getdate() 返回当前的日期和时间
month() 返回日期中的月=datepart(month,)
year() 返回日期中的年=datepart(year,)
其中函数datediff()、datename() and datepart(),要求把日期成分传递给他们。下表为支持的日期成分。
日期成分 缩写
天 dd or d
年中的天 dy or y
时 hh
毫秒 ms
分 mi or n
月份 m or mm
季度 q or qq
秒 ss or s
周 wk or ww
周中的天(仅用于datepart()) dw or w
年 yy or yyyy
T-SQL支持以下几种日期和串表示格式
2006-08-17;
august 17,2006;
20060817;
8/17/2006; 此种表示方式避免使用。*/
--example:
--返回指字日期的成分
select getdate(); --返回当前日期及时间
select datename(d,getdate()); --返回今天是几号
select day(getdate()); --返回今天是几号
select datename(y,getdate()); --返回今年有多少天
select datename(hh,getdate()); --返回现在几点
select datename(ms,getdate()); --返回现在提毫秒数
select datename(q,getdate()); --返回季度
select datename(s,getdate()); --返回秒数
select datename(dw,getdate()); --返回今天是星期几
select datename(w,getdate()); --返回今天是星期几
select datepart(w,getdate()); --以数字表示今天是星期几
select datename(ww,getdate()); --返回今天周数
select datepart(ww,getdate()); --返回今天周数
select datepart(yy,getdate()); --返回今年的年份
select '今年是'+datename(yy,getdate())+'年'+'第'+datename(ww,getdate())+'周'; --返回今年是2013年第53周
--datediff()的使用
select datediff(d,getdate(),'20140819'); --返回今天到20140819的天数
--example:
select cust_id,order_num
from orders
where order_date='20050901' --此时要求数据库中存储的时间为:0:00.000 如不是刚匹配不成功
--解决方法
select cust_id,order_num
from orders
where datediff(day,order_date,'20050901')=0 --比较两个日期的天数差别为0的,
--同理,查询2005年9月份的订单
select cust_id,order_num
from orders
where datediff(month,order_date,'20050901')=0 --month可简写为:m
--等同于
select cust_id,order_num
from orders
where year(order_date)=2005 and month(order_date)=9;
--取当月的最后一天
DECLARE @a DATETIME
SET @a='2017-02-1'
SELECT DATEADD(mm, DATEDIFF(month, '20161231', @a), '20161231');
select DATEDIFF(month, '20161231', @a)
转载于:https://blog.51cto.com/295861/1347186