0

わかりましたので、以下は正常に動作します

mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');

しかし、次のように日付引数のみを指定すると:

mysql> SELECT UNIX_TIMESTAMP('2007-11-30');

その後、どういうわけか、2007-11-30 18:30 GMT に相当するタイムスタンプを取得しています。その特定の日の始まりのタイムスタンプを与えるために、どうにかリセットできますか? UNIX_TIMESTAMP('2007-11-30'); と同様です。UNIX_TIMESTAMP('2007-11-30 00:00:00') に相当するタイムスタンプを与える必要があります。特定の日付以降に発生したイベントに基づいて、テーブルからいくつかのレコードを除外する必要があります。ありがとう

[編集]: 方法はわかりませんが、これは現在期待どおりに機能しているようです。スクリーンショット: 2007-11 :30 00:00:00 2007-11:30 18:30:00 2007-11 :30

4

3 に答える 3

0

私もチェックしましたが、私も00:00:00に与えています。さらに調査したところ、私はこれに出くわしました:

サーバーは、日付を現在のタイム ゾーンの値として解釈し、UTC の内部値に変換します。クライアントは、セクション10.6「MySQL サーバーのタイム ゾーン サポート」で説明されているように、タイム ゾーンを設定できます。

さらに検索すると、サーバーがサーバーマシンのタイムゾーンを使用して起動するときに設定される変数system_time_zoneがあることが明らかになりました。こちらもご覧ください

接続するクライアントごとに、独自のタイムゾーンを次のように設定できます。

mysql> SET time_zone = timezone;

最後に、system_time_zoneを確認し、適切な値に設定する必要があります。

それならうまくいくといいのですが……。

于 2012-08-01T12:42:40.963 に答える
0

タイムゾーンなどに干渉するものに関係なく、UNIX_TIMESTAMP 関数が正しいタイムスタンプを返すことを確認する方法を見つけました。

>> SELECT UNIX_TIMESTAMP(CONCAT(t.DATE,' 00:00:00')) FROM db.table_name t

つまり、クエリ文字列に手動で 00:00:00 を追加します。

于 2012-08-06T07:52:57.210 に答える
0

私はそれをチェックしましたが、「2007-11-30 00:00:00」と「2007-11-30」の同じタイムスタンプを取得しています

mysql> SELECT UNIX_TIMESTAMP('2007-11-30 00:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2007-11-30 00:00:00') |
+---------------------------------------+
|                            1196361000 |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT UNIX_TIMESTAMP('2007-11-30');
+------------------------------+
| UNIX_TIMESTAMP('2007-11-30') |
+------------------------------+
|                   1196361000 |
+------------------------------+

マシンでこれらのクエリを実行して、タイムスタンプ値を確認できますか。

于 2012-08-01T12:30:05.717 に答える