您的位置:首页 > 数据库

SQL server 2005日期函数查询本周、本月数据(较全)

2013-09-09 18:22 309 查看
日期函数

函数名称

参数
示例
说明
dateadd
(日期部分,数字,日期)
select dateadd(year,45,'1990-12-11')
返回 2035-12-11 00:00:00.000
select dateadd(month,45,'1990-12-11')
返回1994-09-11 00:00:00.000
select dateadd(mm,45,'1990-12-11')
返回1994-09-11 00:00:00.000
select dateadd(qq,12,'1990-12-11')
返回1993-12-11 00:00:00.000
select dateadd(hh,12,'1990-12-11')
返回1990-12-11 12:00:00.000
select dateadd(yy,-12,'1990-12-11')
返回1978-12-11 00:00:00.000
返回给指定日期加上一个时间间隔后的新的日期值。
数字:用于与指定的日期部分相加的值。如果指定了非整数值,则将舍弃该值的小数部分,舍弃时不遵循四舍五入。
日期:指定的原日期
在此函数中 dw,dy,dd效果一样都表示天
datediff
(日期部分,开始日期,结束日期)
select datediff(yy,'1990-12-11','2008-9-10')
返回 18
select datediff(mm,'2007-12-11','2008-9-10')
返回 9
返回两个指定日期的指定日期部分的差的整数值。
在计算时由结束日期减去开始日期
在此函数中 dw,dy,dd效果一样都表示天
datename
(日期部分,日期)
select datename(mm,'2007-12-11')返回12
select datename(dw,'2007-12-11')返回星期二
select datename(dd, '2007-12-11')返回11
返回表示指定日期的指定日期部分的字符串。
dw表示一星期中星期几,wk表示一年中的第几个星期
dy表示一年中的第几天
datepart
(日期部分,日期)
select datepart(mm,'2007-12-11')返回12
select datepart(dw,'2007-12-11')返回3
select datepart(dd, '2007-12-11')返回11
返回表示指定日期的指定日期部分的整数。
wk表示一年中的第几个星期
dy表示一年中的第几天,
dw表示一星期中星期几,返回整数默认1为星期天
getdate
无参数
select getdate()
返回2009-04-28 18:57:24.153
返回当前系统日期和时间。
day
(日期)
select day('2007-12-11')返回11
返回一个整数,表示指定日期的天的部分。
等价于datepart(dd, 日期)
month
(日期)
select month('2007-12-11')返回12
返回一个整数,表示指定日期的月的部分。
等价于datepart(mm, 日期)
year
(日期)
select year('2007-12-11')返回2007
返回一个整数,表示指定日期的年的部分。
等价于datepart(yy, 日期)
getutcdate
无参数
select getutcdate()
返回2009-04-28 10:57:24.153
返回表示当前的 UTC(世界标准时间)时间。即格林尼治时间(GMT)
日期部分(指定要返回新值的日期的组成部分。下表列出了 Microsoft SQL Server 2005 可识别的日期部分及其缩写。)
日期部分
含义
缩写
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
具体使用
本周:select * from
table where datediff(week,SJ,getdate())=0 --SJ为日期字段

本月:select * from table where datediff(Month,SJ,getdate())=0 --SJ为日期字段

本季:select * from table where datediff(qq,SJ,getdate())=0

前半年1-6,后半年7-12:select * from table where datepart(mm,C_CALLTIME)/7 = datepart(mm,getdate())/7

sql得到当前系统时间得
日期部分CONVERT(varchar(10),getDate(),120)

上月

select * from tb where month(时间字段) = month(getdate()) - 1

本月

select * from tb where month(时间字段) = month(getdate())

下月

select * from tb where month(时间字段) = month(getdate()) + 1

--昨天 

Select * From TableName Where DateDiff(dd, DateTimCol, GetDate()) = 1

--明天

Select * From TableName Where DateDiff(dd, GetDate(), DateTimCol) = 1

--最近七天

Select * From TableName Where DateDiff(dd, DateTimCol, GetDate()) <= 7

--随后七天

Select * From TableName Where DateDiff(dd, GetDate(), DateTimCol) <= 7

--上周

Select * From TableName Where DateDiff(wk, DateTimCol, GetDate()) = 1

--本周

Select * From TableName Where DateDiff(wk, DateTimCol, GetDate()) = 0

--下周

Select * From TableName Where DateDiff(wk, GetDate(), DateTimCol ) = 1

--上月

Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 1

--本月

Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0

--下月

Select * From TableName Where DateDiff(mm, GetDate(), DateTimCol ) = 1

--------------------------------------------------------

本周

select * from tb where datediff(week , 时间字段 ,getdate()) = 0

上周

select * from tb where datediff(week , 时间字段 ,getdate()) = 1

下周

select * from tb where datediff(week , 时间字段 ,getdate()) = -1

--------------------------------------------------------

datepart(WEEK,addtime )=datepart(WEEK,getdate())datepart(month,addtime )=datepart(month,getdate())datepart(QUARTER,addtime )=datepart(QUARTER,getdate())datepart(Year,addtime )=datepart(Year,getdate())

sql 查询本周本月问题

---求相差天数

select datediff(day,'2004-01-01',getdate())



--1.一个月第一天的

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)



--2.本周的星期一

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)



select dateadd(wk,datediff(wk,0,getdate()),6)

--3.一年的第一天

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)



--4.季度的第一天

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)



--5.当天的半夜

SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)



--6.上个月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))



--7.去年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))



--8.本月的最后一天

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))



--9.本年的最后一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))



--10.本月的第一个星期一

select DATEADD(wk,

DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

--查询本周注册人数

select count(*) from [user]

where datediff(week,create_day-1,getdate())=0



--上周注册人数

select count(*) from [user]

where datediff(week,create_day-1,getdate())=1





--本月注册人数

select count(*) from [user]

where datediff(month,create_day,getdate())=0



--上月注册人数

select count(*) from [user]

where datediff(month,create_day,getdate())=1



--如果要效率,这样写查询



--查询本周注册人数

select count(*) from [user]

where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))

and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112))



--上周注册人数

select count(*) from [user]

where create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112))

and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))





--本月注册人数

select count(*) from [user]

where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))

and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))



--上月注册人数

select count(*) from [user]

where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),convert(varchar,getdate(),112)))

and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))



--本周

select count(*) from User

where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())



--上周

select count(*) from User

where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7



--本月

select count(*) from User

where datepart(mm,create_day) = datepart(mm,getdate())

--上月

select count(*) from User

where datepart(mm,create_day) = datepart(mm,getdate()) - 1

--本周

select count(*) from [User]

where datediff(dd,create_day,getdate()) <= datepart(dw,getdate())



--上周

select count(*) from [User]

where datediff(dd,create_day,(getdate() - datepart(dw,getdate()))) <= 7



--本月

select count(*) from [User]

where datepart(mm,create_day) = datepart(mm,getdate())

--上月

select count(*) from [User]

where datepart(mm,create_day) = datepart(mm,getdate()) - 1

学习

month(create_day)=month(getdate())本月

month(create_day)=month(getdate())-1 上月

补充 查询今日所有的

SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: