アプリ版:「スタンプのみでお礼する」機能のリリースについて

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");
これで合ってますでしょうか。
多分間違ってると思うんですが、どう間違ってるのかもわかりません。

初心者の教えて君で申し訳ないのですが、お願いします。

A 回答 (2件)

startdate=DATE_FORMAT(startdate,'%Y-01-01')


でよいのでは?
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます!
試してみたところ
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というものがあることがわかったので
こちらも調べたいと思います!

お礼日時:2009/05/18 09:47

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- …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/18 09:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す