sql 按时间查询

----今日------
SELECT * FROM 表名 WHERE datediff(day,字段名,getdate())=0;

----昨天------
SELECT * FROM 表名 WHERE datediff(day,字段名,getdate())=1;

-----本月-----
select * from 表名 where  datepart(mm,字段名)=datepart(mm,getdate())

-----今年------
select * from 表名 where  datepart(YYYY,字段名)=datepart(YYYY,getdate()) 

-----指定时间段------
select * from tablename where start_date between  CONVERT(datetime , '2008/05/01', 111 ) and convert(datetime , '2008/05/31', 111 ) 
select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)

select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15')



函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

参数 interval的设定值如下:
值缩写(Sql Server) Access 和 ASP 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

---求相差天数
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)

--3.本周的星期日
select   dateadd(wk,datediff(wk,0,getdate()),6)

--4.一年的第一天
SELECT   DATEADD(yy,   DATEDIFF(yy,0,getdate()),0)  

--5.季度的第一天
SELECT   DATEADD(qq,   DATEDIFF(qq,0,getdate()),0) 

--6.当天的半夜
SELECT   DATEADD(dd,   DATEDIFF(dd,0,getdate()),0) 

--7.上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))

--8.去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))

--9.本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))

--10.本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))

--11.本月的第一个星期一
select   DATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0)


注意:
Convert()函数中的各个参数的意义,第一个参数,varchar(10)是目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。第二个参数是你要转换的字段,我这里是[time]。最后一个就是格式了,这个值是可选的:20或者120都可以,它遵循的是[ODBC 规范],输入/输出样式为:yyyy-mm-dd hh:mm:ss[.fff]
具体的可以参考Sql Server的联机帮助!

======================================================
T-Sql查找表中当月的记录
思路:将要查找的时间字段用Month()函数取出其中的月份,然后再取出当前月的月份,对比就OK了
例:
Select * From VIEW_CountBill Where Month([time]) = Month(getDate())


大家灵活运用吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值