sql 当天、本周、本月数据查询

来源:互联网 发布:java 日期加三个月 编辑:程序博客网 时间:2024/05/23 15:45

select * from table1 where datediff(month,[datetime1],getdate())=0
select * from table1 where datediff(week,[datetime1],getdate())=0

时间格式化“1900-01-01” : convert(varchar(100),getdate(),120)

获取 星期几名称:datename(weekday, getdate())

在当前的日期, 加上减去四天dateadd(day, -4, getdate())


来自:http://www.yijiangnan.com/blog/item/%E6%B5%8B%E8%AF%95%E6%96%87%E7%AB%A0.html


附加:

本月记录
SELECT * FROM 表 WHERE datediff(month,[billdate],getdate())=0
本周记录
SELECT * FROM 表 WHERE datediff(week,[billdate],getdate())=0
当天记录
SELECT * FROM 表 WHERE datediff(day,[billdate],getdate())=0

.其他都没有问题,但是在查询本周的时候就会有问题,因为国外的一周是从周日开始的,也就是周日到周六为一周,而我们国家一般是从周一开始到周日算一周的.而SQL SERVER是微软的产品,所以当然遵循国外的习惯.所以在SQL中凡是涉及到周计算,周查询的,都要考虑这个问题.就上面的举例:上面的本周记录的查询方式是用的国外的计算方式,而按照国内的习惯,这个查询就是错误的.必须先判断今天是否是周日,并采取不同的处理方式.当今天不是周日时,必须将表时间字段减一后进行计算,这是因为上个周日在SQL SEVER中是本周的起始.

IF DATENAME(WEEKDAY,getdate())<>'星期日'
   SELECT * FROM 表 where datediff(week,dateadd(dd,-1,BillDate),getdate())=0
ELSE
   SELECT * FROM 表 where datediff(day,BillDate,getdate())<7

sql server中的其他时间函数

1.   当前系统日期、时间
     select getdate() 

2. dateadd   在向指定日期加上一段时间的基础上,返回新的 datetime 值
    例如:向日期加上2天
    select dateadd(day,2,'2004-10-15')   --返回:2004-10-17 00:00:00.000

3. datediff 返回跨两个指定日期的日期和时间边界数。
    select datediff(day,'2004-09-01','2004-09-18')    --返回:17

4. datepart 返回代表指定日期的指定日期部分的整数。
   SELECT DATEPART(month, '2004-10-15')   --返回 10

5. datename 返回代表指定日期的指定日期部分的字符串
    SELECT datename(weekday, '2004-10-15')   --返回:星期五

6. day(), month(),year() --可以与datepart对照一下

select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114)

select datename(dw,'2004-10-15')

select 本年第多少周=datename(week,'2004-10-15') 这个查询按照国内的算法是有问题的.
       ,今天是周几=datename(weekday,'2004-10-15')


原创粉丝点击