您的位置:首页 > 数据库

SQL dateadd datediff函数

2009-10-28 13:18 411 查看
----------------------------时间操作---------------------------------------
--日期部分     缩写
--year         yy, yyyy
--quarter      qq, q
--month        mm, m
--dayofyear    dy, y
--day          dd, d
--week         wk, ww
--weekday      dw
--hour         hh
--minute       mi, n
--second       ss, s
--millisecond  ms
--weekday (dw) 日期部分返回星期几(如星期日、星期一等)。

select dateadd(month,datediff(month,0,getdate()),0) -----获得第一个月的第一天
select dateadd(week,datediff(week,0,getdate()),0) -----获得本周的星期一
select dateadd(year,datediff(year,0,getdate()),0)-----获得一年的第一天
select dateadd(qq,datediff(qq,0,getdate()),0)-------获得本季度的第一天
select dateadd(ms,-3, dateadd(month,datediff(month,0,getdate()),0))-----获得上个月最后一天(思路:获得本月的第一天然后减去-3毫秒;因为SQL中时间精确到3毫秒)
select dateadd(ms,-3, dateadd(year,datediff(year,0,getdate()),0))-----获得去年的最后一天时间
select dateadd(ms,-3,dateadd(month,datediff(month,0,getdate())+1,0))------获得本月的最后一天(思路:获得下一个月的第一天,然后减去时间的最小单位三毫秒)
select dateadd(ms,-3,dateadd(year,datediff(year,0,getdate())+1,0))--------获得本年的最后一天
select dateadd(week,datediff(week,0,getdate()),0)
select datepart(year,getdate())----返回现在时间中的年
select datename(weekday,getdate())-----返回现在时间的星期
select datename(dayofyear,getdate())----返回今天在一年中的第好多天
select datename(qq,getdate())----返回现在属于第几个季度

-----获得本月的总共天数:思路select datediff(day,'2009-10-15','2009-11-15')
select datediff(day,
convert(varchar(20),datepart(year,getdate()))+
'-'+convert(varchar(20),datepart(month,getdate()))+
'-'+'15',
convert(varchar(20),datepart(year,getdate()))+
'-'+convert(varchar(20),datepart(month,getdate())+1)+
'-'+'15')
-----获得输入月份的总天数
declare @month int
set @month=10
select datediff(day,
convert(varchar(20),datepart(year,getdate()))+
'-'+convert(varchar(20),@month)+
'-'+'15',
convert(varchar(20),datepart(year,getdate()))+
'-'+convert(varchar(20),@month+1)+
'-'+'15')
-----获取本年的二月是否是瑞年 思路:select datediff(day,'2009-02-01','2009-03-01')
select case datediff(day,convert(varchar(20),datepart(year,getdate()))+'-02-01',convert(varchar(20),datepart(year,getdate()))+'-03-01') when  28 then '平年' else '瑞年' end
-----获得一个季度有多少天(瑞年能够被四整除并且不能被100征程获得能够被400整除case when then||case when then else
declare @time varchar(20)
set @time ='2009-10-23'
select case datepart(qq,@time)
when 1 then (case when (year(@time)%4=0 and year(@time)%100<>0) or year(@time)%400=0 then 91 else 90 end)
when 2 then 91
when 3 then 92
when 4 then 92
end
-----------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql qq