• ベストアンサー

日付を一括UPDATE

mysqlで既に入っているDATE型の値を置換したいのですが どうしたらよいのかわからなくて困っています。 行いたい事 2000-11-20 となっている値を 2000-01-01 の様に年をそのままに月日だけを01-01に置き換えたいのです。 そのカラム全てのデータを1月1日に置き換えたいです。 updateとreplaceを用いたら良いのかと思い以下の様なSQL文を作りました UPDATE tablename SET startdate = REPLACE( startdate,"%y-%M-%d","yyyy-01-01"); これで合ってますでしょうか。 多分間違ってると思うんですが、どう間違ってるのかもわかりません。 初心者の教えて君で申し訳ないのですが、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

REPLACE(startdate,"%y-%M-%d","yyyy-01-01") だと、startdateの値の中の"%y-%M-%d"という文字列を"yyyy-01-01"に置換えようとするので、結局 startdate の値そのままになるかと。 YEAR関数を使って年を取得し、MAKEDATEを使ってその年の1/1を作ったらどうでしょう? UPDATE tablename SET startdate = MAKEDATE(YEAR(startdate), 1);

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html
nagi1910
質問者

お礼

試してみたところ狙い通りの動きをしてくれました。 感激で涙が出そうです。 今後のためにもMAKEDATEについてもうすこし調べてみたいと思います。 ありがとうございました!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

startdate=DATE_FORMAT(startdate,'%Y-01-01') でよいのでは?

nagi1910
質問者

お礼

お早い回答ありがとうございます! 試してみたところ 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 ')' at line 1 というエラーをはかれてしまいました・・・。 しかし、DATE_FORMATというものがあることがわかったので こちらも調べたいと思います!

関連するQ&A