MySQL - 存储YYYY-MM-DD日期列以便以后检索为unix时间戳的最佳方法

时间:2013-08-13 11:50:45

标签: mysql date unix-timestamp

我有一个包含每日样本的读数表。因此我有一个名为'date'的列。我需要选择日期作为unix时间戳。

目前我有这个:

  • 日期列使用 date 类型
  • 插入格式为YYYY-MM-DD
  • 在插入时,只关心日期而不是时间(因此可能存储为UTC YYYY-MM-DD 00:00:00 ?)
  • 服务器时区为UTC + 2

我需要unix时间戳 UTC YYYY-MM-DD 00:00:00 (当日开始)。但似乎MySQL将日期存储为UTC值,然后在检索时将它们转换回服务器时区。所以:

SELECT UNIX_TIMESTAMP(`date`) AS `date_stamp` ...

...实际上返回前一天的unix时间戳( YYYY-MM-DD 22:00:00 )。

所以我考虑使用CONVERT_TZ,但我有一台Windows服务器,所以除非我配置 time zone description tables ,否则任何查询都会返回NULL:

SELECT (UNIX_TIMESTAMP(CONVERT_TZ(`date`, 'UTC', 'SYSTEM'))) AS `date_stamp` ...

我做得对吗?我使用最好的日期格式吗?我转换最好的方式吗?

1 个答案:

答案 0 :(得分:0)

尝试选择您喜欢的日期字段

SELECT UNIX_TIMESTAMP(DATE(date)) date from myTable;

我希望能帮助你。