0

どちらも現在の UNIX タイムスタンプを正しく返します。

SELECT UNIX_TIMESTAMP(LOCALTIMESTAMP()); #MySql
echo time(); //PHP

しかし、データベースに UTC_TIMESTAMP を保存しています (LOCALTIMESTAMP ではありません)。

MySQL を使用して UTC 日時を UNIX タイムスタンプに変換するにはどうすればよいですか?

4

1 に答える 1

2

LOCALTIMESTAMP() は NOW() と同義であることに注意してください。したがって、実際に求めているのは、現在の時刻を取得して GMT に変換し、UNIX タイムスタンプに変換してデータベースに保存する方法です。したがって、これは機能します:

SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'));

余談ですが、UNIX タイムスタンプではなく、データベースの時刻と日付の列を使用する方が常にはるかに優れています。結果のクエリと表示がはるかに簡単になります。

更新: 自分が思っているものを確実に手に入れていますか? UNIX_TIMESTAMP は、UNIX エポックからの UTC ベースの秒数を返しますMySQL の DateTime タイプを返しません。実際の UTC DateTime インスタンスがある場合は、それをデータベースの DateTime 列に直接入れることができ、仲介として UNIX_TIMESTAMP を使用する必要はありません。現地時間で実際にどのタイプを持っていますか?

于 2010-12-28T19:33:30.517 に答える