Previous topicNext topic
WebBuilderX > 子页面组件元素 > 表格类元素 > 列表达式 > 表达式方式创建 >
日期时间函数

SQL语句中的日期时间函数非常灵活。

不论是Access还是SQLServer,都可以直接通过Year、Month、Day三个函数获取日期中的年份、月度和具体的日期数,Access甚至还能用WeekDay及Hour、Minute、Second等函数直接得到日期时间中的星期数和时、分、秒。

除了上述几个最常见的日期时间函数外,其他常用函数如下表:

由上表可以看出,DatePart函数非常强大,不仅可以返回年月日和时分秒,还能返回季度、星期等。除了返回小时数的用法略有不同外,其他各种返回值在Access和SQLServer中的用法都是完全一致的。其中,星期数以星期日为一周的开始,从星期日到星期六的返回值分别是1-7。

当在Access中使用DatePart函数时,第一个参数必须使用单引号或双引号;在SQLServer中使用时,则只能用双引号或不用引号。

至于系统日期和时间,Access是通过Date、Time和Now三个函数分别获取的,而SQLServer则全部使用的GetDate函数。该函数默认仅返回系统日期,如要同时返回时间还需Convert数据类型转换函数的配合。

DateAdd函数用于返回相加后的日期,它包含3个参数:第1个是指相加日期的类型,可选项包括DatePart函数所能返回的10种类型;第2个参数表示相加的数值,正数表示后面的日期,负数表示前面的日期;第3个参数为日期列或日期类型表达式。例如下面的2个表达式:

DateAdd("m",3,[日期])

DateAdd("m",-3,[日期])

由于这里相加的类型是“m”,当指定3时,将在日期列的基础上加3个月;当指定-3时,则减3个月。

DateDiff函数用于返回两个日期时间的间隔数,它同样包括3个参数:第1个参数的意义与DateAdd中的同位置参数相同,第2个参数表示起始日期,第3个参数表示结束日期。例如,以下语句的返回值为129,表明两个日期之间相差129天:

DateDiff("d",'2012-3-5','2012-7-12')

这里有个特殊情况:当把第1个参数改为“w”时,表示计算两个日期之间相差多少周。经测试,同样的语句在Access中得到的值为18,这是正确的;但SQLServer中的值却为129。如果改为“ww”,则两种数据库的返回值都是18。因此,当需要在SQLServer中对日期进行以“周”为单位的相加或间隔运算时,一定要使用“ww”而不是“w”!

再如,要对最近两个月的数据进行处理,可在条件判断函数中使用如下语句:

datediff("m", [日期], date()) < 2       'Access的写法

datediff("m", [日期], getdate()) < 2    'SQLServer的写法