到目前为止,我一直在使用此功能
CREATE FUNCTION dt2ts (d DATETIME)
RETURNS BIGINT deterministic
RETURN TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), d);
但是如果我just discovered,如果您的日期与1970-01-01没有相同的偏差,则会产生不正确的结果,即如果您的日期是夏令时则不正确。
UNIX_TIMESTAMP()
不起作用,因为它无法处理unix时代之前的日期。
那么我怎样才能获得任何给定日期时间的正确的 unix时间戳?
答案 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才能实现此目的。我认为没有办法可以做到这一点。