NOW()
在每个查询中只计算一次,也就是在查询开始执行时。这就是说,如果在一个单独的查询中多次引用了NOW()
,它只会给出值都是一个相同的时间。
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
'1970-01-01 00:00:00'
GMT 开始的秒数)。如果以一个参数date
调用UNIX_TIMESTAMP()
,它将返回该参数值从'1970-01-01 00:00:00'
GMT 开始经过的秒数值。date
可以是一个DATE
字符串,一个DATETIME
字符串,一个TIMESTAMP
,或者以一个YYMMDD
或YYYYMMDD
显示的本地时间:mysql> SELECT UNIX_TIMESTAMP(); -> 882226357 mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); -> 875996580当
UNIX_TIMESTAMP
被用于一个TIMESTAMP
列时,函数直接返回一个内部的时间戳值,而不进行一个隐含地 “string-to-unix-timestamp” 转换。如果你传递一个超出范围的日期参数给UNIX_TIMESTAMP()
,它将返回 0,但是请注意,MySQL 对其仅仅进行基本的检验(年范围 1970-2037,月份 01-12,日期 01-31)。 如果你希望减去UNIX_TIMESTAMP()
列,你应该需要将结果强制转换为一有符号整数。查看章节6.3.5 Cast 函数。
FROM_UNIXTIME(unix_timestamp [,format])
'YYYY-MM-DD HH:MM:SS'
或YYYYMMDDHHMMSS
格式返回一个unix_timestamp
参数值,返回值的形式取决于该函数使用于字符串还是数字语境。 如果format
给出,返回值依format
字符串被格式。format
可以包含与DATE_FORMAT()
函数同样的修饰符。mysql> SELECT FROM_UNIXTIME(875996580); -> '1997-10-04 22:23:00' mysql> SELECT FROM_UNIXTIME(875996580) + 0; -> 19971004222300 mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x'); -> '1997 23rd December 03:43:30 1997'
SEC_TO_TIME(seconds)
'HH:MM:SS'
或HHMMSS
格式返回参数seconds
被转换到时分秒后的值,返回值的形式取决于该函数使用于字符串还是数字语境:mysql> SELECT SEC_TO_TIME(2378); -> '00:39:38' mysql> SELECT SEC_TO_TIME(2378) + 0; -> 3938
TIME_TO_SEC(time)
time
转换为秒数后返回:mysql> SELECT TIME_TO_SEC('22:23:00'); -> 80580 mysql> SELECT TIME_TO_SEC('00:39:38'); -> 2378
来源:bc8
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/