sql中时间日期操作(时间日期函数,时间日期格式,时间日期转换参数,时间日期比较,时间日期计算)
dateadd是在指定日期上相加或相减一个时间。
如:在指定日期添加3天select
dateadd(day,3,'2010-05-06'),返回的结果2010-05-09。
datediff是返回两个指定日期相隔的日期时间参数。
如:select
dateadd(day,'2010-05-09','2010-05-06'),返回的结果是3。
datepart是返回指定日期的指定日期参数部分。
如:select
datepart(day,'2010-05-06'),返回的结果是6。
datename返回指定日期的指定日期参数部分的字符串,他和datepart是有区别的,主要在week和weekday上面。
如:select
datename(weekday,
'2010-05-06'),返回的结果是星期四。
如下列结果列出指定日期在本年第多少周,当天是周几:
select
本年第多少周=datename(week,'2010-05-06'),今天是周几=datename(weekday,'2010-05-06')
以下代码值的收藏,关于时间日期格式,时间日期转换参数:
select
CONVERT(varchar, getdate(), 120 ) /*结果:2010-05-06 17:16:28*/
select
replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),'
',''),':','')/*结果:20100506171628*/
select CONVERT(varchar(12) ,
getdate(), 111 ) /*结果:2010/05/06*/
select CONVERT(varchar(12) ,
getdate(), 112 ) /*结果:20100506*/
select CONVERT(varchar(12) , getdate(),
102 ) /*结果:2010.05.06*/
select CONVERT(varchar(12) , getdate(), 101 )
/*结果:05/06/2010*/
select CONVERT(varchar(12) , getdate(), 103 )
/*结果:06/05/2010*/
select CONVERT(varchar(12) , getdate(), 104 )
/*结果:06.05.2010*/
select CONVERT(varchar(12) , getdate(), 105 )
/*结果:06-05-2010*/
select CONVERT(varchar(12) , getdate(), 106 ) /*结果:06
05 2010*/
select CONVERT(varchar(12) , getdate(), 107 ) /*结果:05 06, 2010
*/
select CONVERT(varchar(12) , getdate(), 108 )
/*结果:17:20:09*/
select CONVERT(varchar(12) , getdate(), 109 ) /*结果:05 6
2010 */
select CONVERT(varchar(12) , getdate(), 110 )
/*结果:05-06-2010*/
select CONVERT(varchar(12) , getdate(), 113 ) /*结果:06
05 2010 1*/
select CONVERT(varchar(12) , getdate(), 114 )
/*结果:17:19:44:123*/
相个时间日期的大小比较一般可以使用大于小于等于号。
如:select
twRefundPrice from twChangeRefund where Sdate <= getdate() and Edate
>=getdate()
下面列举一些比较经典的实例,更深入理解sql中时间日期操作:
计算一个月第一天的SQL
脚本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()),
0)
解释:DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-0100:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒一样是从“1900-01-01
00:00:00.000”开始计算的。
本周的星期一:SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()),
0)
一年的第一天:SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
季度的第一天:SELECT
DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
当天的半夜:SELECT DATEADD(dd,
DATEDIFF(dd,0,getdate()), 0)
上个月的最后一天:SELECT dateadd(ms,-3,DATEADD(mm,
DATEDIFF(mm,0,getdate()), 0))
去年的最后一天:SELECT dateadd(ms,-3,DATEADD(yy,
DATEDIFF(yy,0,getdate()), 0))
本月的最后一天:SELECT dateadd(ms,-3,DATEADD(mm,
DATEDIFF(m,0,getdate())+1, 0))
本年的最后一天:SELECT dateadd(ms,-3,DATEADD(yy,
DATEDIFF(yy,0,getdate())+1, 0))
本月的第一个星期一:select DATEADD(wk,
DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

浙公网安备 33010602011771号