`
woai671
  • 浏览: 29267 次
社区版块
存档分类
最新评论

sql 按时间查询

    博客分类:
  • SQL
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())


大家灵活运用吧。  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics