🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

Q&A

解決済

2回答

3477閲覧

Date型の日付を文字列に変換する過程でエラーが発生するが原因が分からない

K_3578

総合スコア1282

MySQL

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

0グッド

0クリップ

投稿2021/02/05 05:47

編集2021/02/05 07:11

前提・実現したいこと

お世話になっております。
初歩的な内容だと思いますが、調べてみて理解が出来なかったため質問させていただきます。
MySQLでDate型のフィールド「task_date」に登録されている物を
SELECTする時に文字列変換を行う必要があり、DATE_FORMAT関数を使って変換しようと思ったのですが、

mysql> SELECT DATE_FORMAT(task_date(),'%m月%d日'); ERROR 1305 (42000): FUNCTION truck_dispatch_system.task_date does not exist

という結果になってしまうのですが、
指定の仕方が誤っているのでしょうか?

試したこと

文内に空白が入っていると認識されないと言う記述を見たので空白を消したりはしてみました。

補足情報(FW/ツールのバージョンなど)

参考にしたサイト

###追記
出ていたエラーの内容に関しましては、
訳してみて、「関数truck_dispatch_system.task_dateは存在しません」となったので指定を間違えていたという理由なのは理解出来ました。
お騒がせして申し訳ありません。
一度、質問する内容を考え直そうと思います。回答、コメント頂いた皆様にはご迷惑をお掛けしてしまい
申し訳ありません。

結局何がしたかったかを説明できていなかったので、再追記します。

テーブル内のtask_dateカラムに入っている内容を全て、**(%c月%e日)**という形で文字列型に変換したかったというのが
目的でした。←(%m月%d日)としていましたが調べ直した結果、こちらの形が望ましかったため変更しました。

内容を整理している間に自分の期待した結果が得られたので回答欄に記述しておきます。

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

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

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

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

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

m.ts10806

2021/02/05 06:13

何をどう調べて理解できなかったのでしょうか。 そこが解決しないと同じような質問を繰り返すことになります。
K_3578

2021/02/05 06:40

m.ts10806様 自分で内容をまとめられていないので、一度質問内容を考え直そうと思います、 お騒がせして申し訳ありません。 Orlofsky様 URLの方修正致しました。ご迷惑お掛けして申し訳ありません。
guest

回答2

0

SQL文の基本の形がまず間違っていたのが原因。
SELECT文 関数(カラム名) FROM テーブル名;

MySQL

1SELECT DATE_FORMAT(task_date,'%m月%d日')from tbl_name;

#####追記
自分でも繰り返しやってきた内容を正常に頭が働いておらず、ど忘れしていたようです。
そのまま勢いで質問し、自分自身を見つめる前に解決としてしまった事、
このような事を回答欄に残すことを深くお詫び申し上げます。

投稿2021/02/05 07:15

編集2021/02/08 06:48
K_3578

総合スコア1282

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

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

m.ts10806

2021/02/05 07:24 編集

いえ "関数と変数の扱い方がわかっていない、区別できていない" という点です。 SQLの問題ではないです。プログラミングのもっと根本的な問題です。 本質的なところを勘違いされたまま強引に解決とされたので悪いのですが低評価しています。 「とりあえず目の前の問題だけ片付けばいい」という考えかたは他の初学者の参考にはなりえません。 頑なにドキュメントを参照しない(回答に載ってないことから判断)姿勢も謎です。一番正しいことが書いてあるのに。
K_3578

2021/02/05 07:27

コメントありがとうございます。 >"関数と変数の扱い方がわかっていない、区別できていない" ご指摘、低評価に返す言葉もないのですが、 理解出来ているはずの根本的な問題を理解出来てないので 時間を空けてから再度考え直そうと思います。申し訳ありません。
guest

0

ベストアンサー

task_date()

エラーの通り、フィールドではなくfunctionを指定されています。

投稿2021/02/05 05:56

m.ts10806

総合スコア80875

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

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

m.ts10806

2021/02/05 06:02

あと SELECT DATE_FORMAT(task_date(),'%m月%d日'); これだとテーブルを指定してないからフィールドに直したとて、別のエラーが出るのは明白。 SQLの基本からどうぞ。
K_3578

2021/02/05 06:17

回答ありがとうございます。 テーブル指定は忘れてましたね・・・ご指摘ありがとうございます。 SELECT DATE_FORMAT('2021-01-02','%m月%d日')from tbl_name; ↑としてみたところ、全レコードが01月02日というフォーマットで取得されたのですが DATE_FORMATだと、一つの指定された日付以外は変換できないのでしょうか?
m.ts10806

2021/02/05 06:31

>↑としてみたところ DB次第ですが、MySQLならテーブルの情報を参照しないSELECTにfrom句は不要です。質問よりコードが退化していますし、回答がなんの参考にもされてません。 結局どういう定義やデータに対してどういう結果を得たいのでしょうか? DATE_FORMATはfunctionです。 何かしらの言語の基本が分かっていればfunctionの使い方もイメージできると思うのですけど。 まずは、ドキュメント確認されては?
m.ts10806

2021/02/05 07:16

本件の本質は、 "関数と変数の扱い方がわかっていない、区別できていない" という点。 タグや過去質問見る限りJavaをされてきたようですが、そこでさんざんやってきたのでは? これを機に入門レベルから体系的な学習に切り替えるべきかと。 やりたいことだけ先行しても何も出来上がりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問