一:DateAdd与DateDiff的用法。
DateAdd(interval,number,date),通过interval格式为date加上值number
DateDiff(interval,date1,date2),计算date1和date2之间的interval差距。
在T-SQL中,日期类型的0表示的值是1900-01-01,可以用 select convert(datetime,0)来得出。
那么,如果要计算当前月的第一天的日期,该怎么做呢?
思路:首先,与原始日期0 DateAdd mm<月份>格式的number后,输出的所得的mm值后月份的1号,也就是第一天。
因此,我们可以先计算当前月与0之间的月份差:
DateDiff(mm,0,getdate()) 当前是8月份,经计算得出的结果是1303,也就是与1900-01相关1303个月。
接着我们再在原始基础上加上这1303个月
DateAdd(mm,1303,0) 得出的结果是:2008-08-01 00:00:00 0000
因此:一句SQL语句可以得出:
select DateAdd(mm,DateDiff(mm,0,getdate()),0) as 这个月第一天
------
同理,跟第一天,周一,第一个月,季度第一天,一年第一天都可以同样的方式。只不过interval更改一下就可以
例:这周的第一天:
select DateAdd(wk,DateDiff(wk,0,getdate()),0) as 周一
select DateAdd(yy,DateDiff(yy,0,getdate()),0) as 今年第一天
------
有一个比较特殊的,当天的半夜怎么弄??
很简单的,半夜不就==12点整么,12点整不就是另外一天了么?
因此,
select DateAdd(dd,DateDiff(dd,0,getdate()),0) as 当天半夜
同样的道理,当天半夜不就是另外一天的开始么,
和这个月的第一天这些一样,实际上当天的半夜的命题===今天的第一个小时《语文不好,感觉有点啥》
------
如果这些命题都不是提的第一天,第一小时啥的,而是最后一天,最后一小时呢???
^_^
------
TSQL的几个特殊用法(一)
<h3>
心静似高山流水不动,心清若巫峰雾气不沾。
</h3>
心静似高山流水不动,心清若巫峰雾气不沾。
</h3>