質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

538閲覧

MySQLの作成したテーブルの中にあるTIMESTAMP型のカラムの設定が意図した値と違う

kaya_miyoshi

総合スコア23

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2018/11/05 07:51

MySQL 8.0.13 にデータベース sampledb を作成した後、

mysql> create table tstest(ts1 timestamp, ts2 timestamp, ts3 timestamp);

...で tstest テーブルを作成し、

mysql> show columns from tstest; +-------+-----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+---------+-------+ | ts1 | timestamp | YES | | NULL | | | ts2 | timestamp | YES | | NULL | | | ts3 | timestamp | YES | | NULL | | +-------+-----------+------+-----+---------+-------+ 3 rows in set (0.00 sec)

...となります。

本当は下のようにならないといけないと思いますが、なぜならないのでしょうか?

+-------+-----------+------+-----+---------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+---------------------+-----------------------------+ | ts1 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | ts2 | timestamp | NO | | 0000-00-00 00:00:00 | | | ts3 | timestamp | NO | | 0000-00-00 00:00:00 | | +-------+-----------+------+-----+---------------------+-----------------------------+

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もともとMySQLはtimestamp型のデータを1テーブルにつき1カラムまでしか持てませんでした
(ようはデータ更新日時を保持するためのカラム)
なので動的なタイムスタンプは特に指定がなければご提示のようなものが妥当かと。
そもそも残りのタイムスタンプはdatetime型で十分ではないでしょうか?

投稿2018/11/05 07:57

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaya_miyoshi

2018/11/05 08:04

アドバイスありがとうございます。 勉強になります。
guest

0

ベストアンサー

create table するときに default 値の設定も not null 指定もしていないのですから、上の表のようになって当然です。

投稿2018/11/05 07:53

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaya_miyoshi

2018/11/05 08:02

mysql> create table tstest(ts1 timestamp not null default current_timestamp on update current_timestamp, ts2 timestamp not null default '0000-00-00', ts3 timestamp not null default '0000-00-00'); Query OK, 0 rows affected (0.08 sec) mysql> show columns from tstest; +-------+-----------+------+-----+---------------------+-----------------------------------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------+------+-----+---------------------+-----------------------------------------------+ | ts1 | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | | ts2 | timestamp | NO | | 0000-00-00 00:00:00 | | | ts3 | timestamp | NO | | 0000-00-00 00:00:00 | | +-------+-----------+------+-----+---------------------+-----------------------------------------------+ 3 rows in set (0.00 sec) ...で意図した結果になりました。 聞いた方が早いと、よく調べずに質問してしまいすみませんでした。 今度からはもう少し考えてからにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問