LoginSignup
1
0

More than 1 year has passed since last update.

あれ?timestampのインサートができない。。。15分ほど悩んだ。

Posted at

test1テーブルのtimestampを変更したくて15分つまづきました。
カラムの型が何かっていうのちゃんと把握してSQL書こうねっていう話です。

変更前(テーブル)

id name timestamp
1 pe 2021-12-1 09:00:00
2 bu 2021-12-2 10:00:00
3 ze 2021-12-3 11:00:00
3 pe 2021-12-3 11:10:00

変更後(こうしたい)

id name timestamp
1 pe 2021-11-24 09:00:00
2 bu 2021-11-25 10:00:00
3 ze 2021-12-3 11:00:00
3 pe 2021-12-3 11:10:00

というわけでググってそれっぽいのがあったので下記のSQLを実行・・・した結果エラー

mysql
UPDATE test1 SET date=2021-11-24 09:00:00  WHERE name= 'pe'
mysql-error
#1064 - You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version 
for the right syntax to use near '2021-11-24 09:00:00 WHERE name= 'pe'' at line 1

何かしら構文が間違っていることは分かるけどどこかがいまいち分からず
解説サイトをモソモソと。。。

この時ぺは2行あるのでpeじゃダメなんだろうか。。。。
エラー的には違うんだよなぁ、云々考えつつ、こういうこともできるかな?と思って色々と実行

まちがったmysql
#1
UPDATE test1 
SET ,date = 2021-11-24 09:00:00 
WHERE name= 'pe'
---err=> #1064 - You have an error in your SQL syntax;

#2
UPDATE test1 
SET ,date = 2021-11-24
WHERE name= 'pe'
---err=> #1064 - You have an error in your SQL syntax;

#3
UPDATE test1 
SET date = 2021-11-24 09:00:00 
WHERE name= 'pe'

---err=> #1064 - You have an error in your SQL syntax;

うーん、なんかあとちょっとなのに上手く行かない。
とりあえず文字囲いしてみると・・・

答え

mysql
UPDATE `test1` 
SET date = '2021-11-24 09:00:00'
WHERE name= 'pe'

TIMESTAMP型は数字か文字列かをちゃんと把握せずにSQLを書いて、「あっ」となったのでした。
以上、カラムの型が何かっていうのちゃんと把握してSQL書こうね。という話でした。

参考にした

https://www.doodle-office.work/entry/2017/07/12/161520
updata文を一旦再確認
http://sql.main.jp/sql13.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0