日期部分 | 缩写 |
年份 | yy、yyyy |
季度 | qq、q |
月份 | mm、m |
每年的某一日 | dy、y |
日期 | dd、d |
星期 | wk、ww |
工作日 | dw |
小时 | hh |
分钟 | mi、n |
秒 | ss、s |
毫秒 | ms |
day()--取日期
month()--取月份
year() --取年份
dateadd(datepart, number, date)
datapart指定对哪一部分加,
number知道加多少,
date指定在谁的基础上加。
datepart的取值包括,year,quarter,month,dayofyear,day,week,hour,minute,second,比如明天dateadd(day,1, getdate())
datediff(datepart,date1,date2).
datapart和上面一样。整个函数结果是date2 -date1
datename(datepart, date)
取哪一部分,返回字符串。
datepart(datepart, date)
取一部分,返回整数。
getdate()
当前时间
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。 及这篇文章中的其他例子都将只使用DATEDIFF和DATEADD函数来计算我们想要的日期。每一个例子都将通过计算但前的时间间隔,然后进行加减来得到想要计算的日期。 SELECT DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0) SELECT DATEADD(wk, DATEDIFF(wk, 0, getdate()), 0) 一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0) 季度的第一天 假如你要计算这个季度的第一天,这个例子告诉你该如何做。 SELECT DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0) 当天的半夜 在半夜。假如这样,这个例子使用DATEDIFF和DATEADD函数来获得半夜的时间点。 SELECT DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) 深入DATEDIFF和DATEADD函数计算 SELECT dateadd(ms, - 3, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))
计算出来的日期的时间部分包含了一个Sql SELECT dateadd(ms, - 3, DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0))
本月的最后一天 样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。 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) 在这个例子里,我使用了“本周的星期一”的脚本,并作了一点点修改。修改的部分是把原来脚本中“getdate()”部分替换成计算本月的第6天,在计算中用本月的第6天来替换当前日期使得计算可以获得这个月的第一个星期一。 declare @ datetime 2)显示星期几 select datename(weekday, getdate()) 3)如何取得某个月的天数 declare @m int
另外,取得本月天数 select datediff( day, cast( month( GetDate()) as varchar) + ' - ' + cast( month( GetDate()) as varchar) + ' -15 ', cast( month( GetDate()) as varchar) + ' - ' + cast( month( GetDate()) + 1 as varchar) + ' -15 ')
或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天 SELECT Day( dateadd(ms, - 3, DATEADD(mm, DATEDIFF(m, 0, getdate()) + 1, 0))) 4)判断是否闰年:
SELECT case day( dateadd(mm, 2, dateadd(ms, - 3, DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)))) 5)一个季度多少天
declare @m tinyint, @time smalldatetime case when @m between 1 and 3 then 1 --DATENAME函数的主要用处是从日期中提取指定部分数据,比如我们想得到当前日期中的年份,月份等信息,就可以使用该函数.返回类型是nvarchar. select
|
T-SQL 日期转换:
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120
),'-',''),' ',''),':','')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004
select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004
select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004
select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004
select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004
select CONVERT(varchar(12) , getdate(), 108 )
11:06:08
select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1
select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004
select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1
select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177