Skip to main content

时间函数

时间函数汇总。

TODAY

返回现在日期。

名称类型描述
语法TODAY( )
返回类型VARCHAR

示例及效果:

SELECT TODAY( ) FROM sample

CURTIME

返回现在时间。

名称类型描述
语法CURTIME( )
返回类型VARCHAR

示例及效果:

SELECT CURTIME( ) FROM sample

DAYOFMONTH

返回日期和时间戳月中的第几号。

名称类型描述
语法DAYOFMONTH ( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT DAYOFMONTH( NOW( ) ) FROM sample 

DAYOFWEEK

返回日期和时间戳的一周星期几,按国际标准从周日开始为1。

名称类型描述
语法DAYOFWEEK( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT DAYOFWEEK( NOW( ) ) FROM sample

DAYOFYEAR

返回日期和时间戳在一年中的天数位置。

名称类型描述
语法DAYOFYEAR( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT DAYOFYEAR( NOW( ) ) FROM sample

HOUR

返回时间或时间戳中的小时部分。

名称类型描述
语法HOUR( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT HOUR( NOW ( ) ) FROM sample

MINUTE

返回时间或时间戳中的分钟部分。

名称类型描述
语法MINUTE( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT MINUTE( NOW( ) ) FROM sample 

MONTH

返回日期和时间戳的月份。

名称类型描述
语法MONTH( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT MONTH( NOW( ) ) FROM sample

NOW

返回日期和时间戳的月份。

名称类型描述
语法NOW( )
返回类型VARCHAR

示例及效果:

SELECT NOW( ) FROM sample

QUARTER

返回日期和时间戳的季度号。

名称类型描述
语法QUARTER( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT QUARTER( NOW( ) ) FROM sample

SECOND

返回时间和时间戳的秒部分。

名称类型描述
语法SECOND( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT SECOND( NOW( ) ) FROM sample

WEEK

返回日期和时间戳在一年的第几周。

名称类型描述
语法WEEK( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT WEEK( NOW( ) ) FROM sample

YEAR

返回日期和时间戳的年部分。

名称类型描述
语法YEAR( expression )
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型INT

示例及效果:

SELECT YEAR( NOW(  ) ) FROM sample

DAYNAME

返回时间和时间戳在一周中名字,如星期一、星期二、星期三…。

名称类型描述
语法DAYNAME( espression)
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
返回类型VARCHAR

示例及效果:

SELECT DAYNAME( NOW( ) ) FROM sample

MONTHNAME

返回日期和时间戳的月份名字。

名称类型描述
语法MONTHNAME( expression [,format]
参数expression具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
参数format以单引号包括'en'-返回双位数月份,如01、02、03…11、12,这是默认取值。'cn'-返回月份,如一、二、三、十一、十二。
返回类型VARCHAR

示例及效果:

SELECT MONTHNAME( NOW( ) ) FROM sample

FORMATDATE

返回日期和时间戳的月份名字。

名称类型描述
语法FORMATDATE( expression[,format]
参数expression时间常量,日期常量字符。
参数format以单引号包括。返回字符的格式字符,如'yyyy-mm-dd hh24:mi:ss'。
返回类型VARCHAR

示例及效果:

SELECT FORMATDATE('2012-02-01', 'yyyy-mm-dd hh24:mi:ss') FROM sample

暂时只支持以下8格式定义:

时间精度格式
DATETIME'yyyy-MM-dd HH24:mi:ss'
DATE'yyyy-MM-dd'
TIME'HH24:mi:ss'
DATETIME_CN'yyyy年MM月dd日HH24时mi分ss秒'
DATE_CN'yyyy年MM月dd日'
TIME_CN'HH24时mi分ss秒'
YYYYMMDD'yyyyMMdd'
HHMMSS'HH24miss'

DATEADD

返回指定的VARCHAR之后若干秒的另一个VARCHAR类型的数值。

名称类型描述
语法DATEADD(date ,addcount ,type)
参数date具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
参数addcount整数,表示expression1之后若干(年、月、天、小时、分钟、秒),如果 expression2 为负,则表示之前。
参数type取值范围:Year,Month,Day,Hour,Minute,Second六种,返回值是由此参数决定。例如type= Year,缺省为秒。
返回类型VARCHAR

示例及效果:

SELECT DATEADD(NOW(), 1*60*60*24) FROM sample

SELECT DATEADD(NOW(),1, 'month') FROM sample

DATEDIFF

返回两个指定的VARCHAR之间相隔的时间差。

名称类型描述
语法DATEDIFF(startDate ,endDate ,type)
参数startDate开始时间,具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。
参数endDate结束时间,具有VARCHAR类型的日期常量、列或它们的任意组合运算的结果。这里的计算方式是endDate - startDate,返回为两者相隔数,单位由type决定。
参数type可以省略,以单引号包括,默认是day。取值范围:Year,Month,Day,Hour,Minute,Second六种,返回值是由此参数决定。例如type=Year,则函数计算结果是两个时间相差的年数。
返回类型INT

示例及效果:

SELECT DATEDIFF(NOW(), tt) FROM sample

另外特别说明,年、月、日是截断计算的,时、分、秒是取秒后再反算,再取整,算法是有差异的:

  1. 年计算:2011-12-31 与 2012-1-1的计算结果是1年。
  2. 月计算:2012-3-31 与 2012-4-1的计算结果是1月。
  3. 日计算:2012-4-2 02:01:01 与 2012-4-1 23:59:59的计算结果是-1日。
  4. 时计算:2012-4-1 1:00:09 与 2012-4-1 02:00:01的计算结果不足一小时是0时。2012-4-1 1:01:01 与 2012-4-1 02:59:59的计算结果不足两小时是1时。
  5. 分计算:2012-4-1 1:01:59 与 2012-4-1 01:02:01的计算结果不足一分钟是0分。2012-4-1 01:01:01 与 2012-4-1 1:02:59的计算结果不足两分钟是1分。
  6. 秒计算:2012-4-1 01:01:01 与 2012-4-1 01:01:02的计算结果是1秒。

本函数是参考mssql的DATEDIFF进行处理的,所以计算值也跟它类似,但也有区别,时、分、秒的计算就有区别(其他数据库转换不了,所有就没处理相同)。