sql server 2005
对于最基本的sql查询格式,我不想再过多的解释,本身sql要求就是这样,就这么简单,这个模块主要来说一下前一天和后一天的算法语句,首先,我们来定义一个时间字段的参数,暂且命名为Date,语句为:declare @Date datetime
接下来,我们给@Date这个参数进行赋值,还是大家比较熟悉的getDate(),语句为: set @Date=getDate()。
接下来就是最主要的部分了,如何去进行时间的计算呢,这里先介绍一个函数,就是dateAdd(),DATEADD() 函数在日期中添加或减去指定的时间间隔,语法为:DATEADD(datepart,number,date),datepart参数是合法的日期表达式。number是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
接下来,我们来些一下计算前一天的算法语句:select dateAdd(day,-1,@Date) as 'Yesterday',这里的as后面的内容只是定义查询出来列的名称而已。
最后,我们来执行一下这个查询语句。
后一天的算法语句如出一辙,只是需要将dateAdd中的时间间隔数进行一下调整即可。
月初,顾名思义就是月的第一天,接下来,我们就来看一下,如何计算给定日期所在月的第一天。技巧就在于我们应该先计算当前日期到“1900-01-01”的时间间隔数,然后把这个间隔数再加到“1900-01-01”上来获得特殊的日期。
那如何来计算当前日期到“1900-01-01”的时间间隔数,这里我们就需要用到另外一个函数了,那就是datediff()。datediff()函数是返回两个日期之间的间隔。语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 )date-part : year | quarter | month | week | day | hour | minute | second | millisecond参数 date-part 指定要测量其间隔的日期部分。有关日期部分的详细信息,请参见日期部分。date-expression-1 某一间隔的起始日期。从 date-expression-2 中减去该值,返回两个参数之间 date-parts 的天数。date-expression-2 某一间隔的结束日期。从该值中减去 Date-expression-1,返回两个参数之间 date-parts 的天数。用法 此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
由上可知,month作为日期部分出现时,返回的是出现月的第一天的数目,其实也就是月数。接下来,我们利用这个月数,再使用dateAdd()函数,进行一个计算。
以month为日期部分,系统将不再精确到时分秒了。
根据SQL Server的时间表示方式可知,'1900-01-01' 可以用0代替,所以我们的算法语句就更为简单了。
那如果我们想保留时分秒,该如何做呢?这里我们就需要用到另外一个函数了,就是datepart()。DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。也不多说了,直接上图,关键在于大家亲自去编写。
利用datepart()函数这个用法,我们就大概能够思考到这么一个思路:用给定日期减去月第一天与给定日期差的天数,为什么呢?因为day作为日期出现时,是可以精确到时分秒的哦。语句为:select dateAdd(day,1-datepart(day,@Date),@Date) 。
其他时间算法语句以及其他相关的经验,会在稍后推出,大家也不需要太着急,先将这些慢慢消化,真正的弄懂以后,而且会举一反三的时候,再学习其他的也不晚哦~