0

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

目前我有这个:

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

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

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

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

所以我考虑过使用 CONVERT_TZ,但我有一个 Windows 服务器,所以似乎任何查询都返回 NULL,除非我配置时区描述表

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

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

4

1 回答 1

0

尝试像这样选择您的日期字段

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

我希望这对你有帮助。

于 2013-08-13T13:21:54.513 回答