1

次のクエリを実行すると:

ALTER TABLE `price_s` ADD COLUMN `ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  AFTER `price_s_id` ;

新しい列には が入力され0000-00-00 00:00:00ます。この列の値は、列を変更するまで現在のタイムスタンプに更新されません。つまり、ON UPDATE CURRENT_TIMESTAMP正常に動作しているようです。

私が実行した場合:

SELECT version( ) , @@time_zone , @@system_time_zone , NOW( ) , UTC_TIMESTAMP( )

私が得た:

'5.5.15', '+10:00', 'EST', '2012-08-23 14:56:59', '2012-08-23 04:56:59'

列に UTC 時刻を保存したいのですがts、どうすればよいですか?

これが関連しているかどうかわからないので、mysql.time_zone*テーブルを生成しようとしました:

Miranda-Macbook: ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
Enter password: Warning: Unable to load '/usr/share/zoneinfo/+VERSION' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.

@Sameer と @Marc B に感謝します。これで、タイムスタンプをより理解できるようになりまし

SET time_zone = 'SYSTEM';
UPDATE tablename SET ts=now()
4

1 に答える 1

2
INSERT INTO yourtable (ts) VALUES (now())
UPDATE yourtable SET ts=now()

ts フィールドに入力するものが有効な mysql タイムスタンプ文字列 ( yyyy-mm-dd hh:mm:ss) である限り、タイムゾーンが何であるかは関係ありません。これは、変換または取得時にのみ関連します。mysql の日付フィールド自体にはタイムゾーンの概念がなく、日付/時刻データの単なるリポジトリです。

于 2012-08-23T05:08:43.423 に答える