如何将DATETIME转换为unix时间戳(并正确处理负日期)?

时间:2015-06-01 18:26:35

标签: mysql

到目前为止,我一直在使用此功能

CREATE FUNCTION dt2ts (d DATETIME)
RETURNS BIGINT deterministic
RETURN TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), d);

但是如果我just discovered,如果您的日期与1970-01-01没有相同的偏差,则会产生不正确的结果,即如果您的日期是夏令时则不正确。

UNIX_TIMESTAMP()不起作用,因为它无法处理unix时代之前的日期。

那么我怎样才能获得任何给定日期时间的正确的 unix时间戳?

1 个答案:

答案 0 :(得分:0)

找出解决方案。

CREATE FUNCTION dt2ts (d DATETIME)
RETURNS BIGINT deterministic
RETURN TIMESTAMPDIFF(SECOND, '1970-01-01', convert_tz(d,@@session.time_zone,'UTC'));

您需要import timezones才能实现此目的。我认为没有办法可以做到这一点。