我无法找到(谷歌搜索,阅读mysql参考手册)如何在MySQL中获得 DATETIME的值
。我不是指从datetime中提取秒数,而是将其转换为秒。
答案 0 :(得分:40)
如果通过“转换为秒”,则表示“转换为UNIX Timestamp ”(即自{{1}以来的秒数}),然后您可以使用UNIX_TIMESTAMP
函数:
1970-01-01
而且,为了完整性,要从Unix时间戳转换为日期时间,您可以使用FROM_UNIXTIME
函数。
答案 1 :(得分:32)
如果您希望获得两个DATETIME值之间的差异,请使用TIMESTAMPDIFF
:
<强> TIMESTAMPDIFF(单元,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”将仅限制使用。
答案 2 :(得分:7)
在以前的版本中使用TIME_TO_SEC for mysql
SELECT TIME_TO_SEC(时间列)FROM表
答案 3 :(得分:3)
我在mysql中使用
TO_SECONDS(您的日期在此处)将日期转换为第0年的秒数
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
答案 4 :(得分:2)
函数UNIX_TIMESTAMP( datetime )返回unix时间,该时间恰好是自1970年1月1日至1970年0000 UTC以来的秒数。这可能是你所需要的,但如果你正在处理2037年以后的出生日期,历史日期或日期,那就不一定了。
答案 5 :(得分:2)
从mysql 5.5.0开始,您可以使用to_seconds()
TO_SECONDS(FIELD_NAME)
FIELD_NAME必须为DATETIME
类型
答案 6 :(得分:0)
我已经为您的问题创建了自己的查询:
SELECT HOUR(`colname`) * 3600 + MINUTE(`colname`) * 60 + SECOND(`colname`)
FROM widgets
WHERE id = 1;
id = 1
。