3

MySQL で UNIX タイムスタンプを処理しようとしたときに、奇妙なことがわかりました。'00:59:59'任意の日付の UNIX タイムスタンプに変換すると、との間'01:00:00'が 1 秒を超えていることに気付きました。もう少し深く掘り下げると、次のクエリの例があり、結果がわかりません。

SELECT FROM_UNIXTIME(1382835600) AS a, FROM_UNIXTIME(1382832000) AS b;
+---------------------+---------------------+
| a                   | b                   |
+---------------------+---------------------+
| 2013-10-27 01:00:00 | 2013-10-27 01:00:00 |
+---------------------+---------------------+

両方の UNIX タイムスタンプは 1 時間 (3600 秒) 離れていますが、結果のタイムスタンプは同じです。タイムゾーンの問題かもしれませんが、結局同じサーバー上にあります。

4

2 に答える 2

5

気を取り直して、冬が来ますように…

これは、タイムゾーンに応じて、夏時間から冬時間への移行によって発生します (このリンクを参照してください)。

2013 年 10 月 27 日は、私たちが冬時間に入った日でした (少なくともヨーロッパ諸国では​​)。午前 3 時に、時間は午前 2 時になりました。これは、これら 2 つの異なるタイムスタンプが同じ時間である理由を説明しています。

MySQL ドキュメントから抽出:

[FROM_UNIXTIME] unix_timestamp 引数の表現を返します [...]。値は現在のタイムゾーンで表されます。

私の計算が正しければ、あなたは GMT 時間で働いています。
数時間後にもう一度試してみてください。すべて問題ないことがわかります。

SELECT FROM_UNIXTIME(1382839200) AS a, FROM_UNIXTIME(1382842800) AS b;
于 2013-10-31T14:15:53.437 に答える