我在谷歌搜索和阅读MySQL参考手册后,无法找到如何获取MySQL中DATETIME以秒为单位的值。
我的意思不是从datetime中提取秒数,而是将datetime转换为秒数。
UNIX_TIMESTAMP
函数:select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
为了完整起见,要将Unix时间戳转换为日期时间,您可以使用FROM_UNIXTIME
函数。
如果您想计算两个DATETIME值之间的差异,请使用TIMESTAMPDIFF
:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回
datetime_expr2 - datetime_expr1
,其中datetime_expr1
和datetime_expr2
是日期或日期时间表达式。一个表达式可以是日期,另一个可以是日期时间;日期值被视为具有必要的时间部分“00:00:00”的日期时间。结果(整数)的单位由单位参数给出。单位的合法值与TIMESTAMPADD()
函数的描述中列出的相同。
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
unit
可以是HOUR
,这也是您在其中一条评论中提出的要求。
单位参数可以是以下任何一个:
当然,其他选项的有用程度将由数据的细粒度决定。例如,如果您没有在DATETIME值中存储微秒,则“MICROSECOND”将只有有限的用途。
在之前的MySQL版本中,可以使用TIME_TO_SEC函数。
使用如下语句:SELECT TIME_TO_SEC(time列) FROM 表名
我在mysql中使用了TO_SECONDS(你的日期)方法,将日期从公元0年转换为秒数。
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
UNIX_TIMESTAMP(日期时间)函数返回Unix时间戳,即自1970年1月1日0000 UTC以来的秒数。如果您处理的是出生日期、历史日期或2037年之后的日期,则可能不适用。
从mysql 5.5.0开始,您可以使用to_seconds()
函数。
TO_SECONDS(FIELD_NAME)
字段名必须是DATETIME
类型。
SELECT HOUR(`colname`) * 3600 + MINUTE(`colname`) * 60 + SECOND(`colname`)
FROM widgets
WHERE id = 1;
id = 1
。