本文共 1575 字,大约阅读时间需要 5 分钟。
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())
来自:
附加:
本月记录
SELECT * FROM 表 WHERE datediff(month,[billdate],getdate())=0 本周记录 SELECT * FROM 表 WHERE datediff(week,[billdate],getdate())=0 当天记录.其他都没有问题,但是在查询本周的时候就会有问题,因为国外的一周是从周日开始的,也就是周日到周六为一周,而我们国家一般是从周一开始到周日算一周的.而SQL SERVER是微软的产品,所以当然遵循国外的习惯.所以在SQL中凡是涉及到周计算,周查询的,都要考虑这个问题.就上面的举例:上面的本周记录的查询方式是用的国外的计算方式,而按照国内的习惯,这个查询就是错误的.必须先判断今天是否是周日,并采取不同的处理方式.当今天不是周日时,必须将表时间字段减一后进行计算,这是因为上个周日在SQL SEVER中是本周的起始.
IF DATENAME(WEEKDAY,getdate())<>'星期日'
SELECT * FROM 表 where datediff(week,dateadd(dd,-1,BillDate),getdate())=0 ELSEsql server中的其他时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天 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')
转载地址:http://opzmi.baihongyu.com/