Better way to safely insert UTC time value into mySQL TIMESTAMP variable?
我的应用程序想要将时间戳值插入mySQL数据库中的TIMESTAMP变量。时间戳值是通常的"YYYY-MM-DD HH:MM:SS"格式的UTC时间。问题是我的SQL服务器设置为使用SYSTEM时间(
为了让mySQL做正确的事情,似乎我需要在插入之前将UTC时间戳转换为系统时间,以便mySQL可以在内部存储之前将其从系统时间转换为UTC时间。这段代码具有预期的效果: -
1 |
1 2 3 4 5 | +------------------------------------------------------------------+ | timestamp("2015-05-06 12:34:56")+CURRENT_TIMESTAMP-UTC_TIMESTAMP | +------------------------------------------------------------------+ | 20150506133456.000000 | +------------------------------------------------------------------+ |
我现在要用这个来运行,但它看起来像是一个偏执狂,所以有更好的方法吗?
[编辑]另一轮RTFM'ing给了我这个想法......
1 |
1 2 3 4 5 | +-------------------------------------------------------+ | CONVERT_TZ("2015-05-06 12:34:56","+00:00","SYSTEM") | +-------------------------------------------------------+ | 2015-05-06 13:34:56 | +-------------------------------------------------------+ |
看起来更清洁了。有更好的想法吗?
您可以使用
1 2 | SELECT CONVERT_TZ('2015-05-06 12:34:56','+00:00','SYSTEM') AS `Local Time`, UNIX_TIMESTAMP(CONVERT_TZ('2015-05-06 12:34:56', '+00:00', 'SYSTEM')) AS `UNIX Timestamp`; |
1 2 3 4 5 |
本地时间值将根据运行查询的系统而有所不同。 但是,UNIX时间戳值将相同。
然后,您可以在timestamp列中插入本地时间值; MySQL将在转换后存储该值。