属性「datum」(varchar(25))を含むテーブルを持つデータベースが与えられました。データベースの設計が不十分なため、この列には文字列形式の日付値が入力されます。次に例を示します。
「2013年2月25日、3:47p」
テーブルにクエリを実行し、すべての行を日ごとにグループ化する必要があります(上記の例では25)。これを行うには、DATE_FORMAT(datum、'')関数を使用する必要がありますか?その関数を使用するたびに、null値を取得します。
STR_TO_DATE()
機能(ドキュメント)を試しましたか?
DATE_FORMAT()
これは、文字列ではなく、最初のパラメーターとして日付値をとる逆です。次に、それを使用して正しい日の値を取得できます。
これがあなたのクエリに一致するSQLコマンドです。私はテストして動作しました。
SELECT *
FROM tablename
WHERE DATE_FORMAT( STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p'), '%d' ) = 25;
文字列であるため、を使用して有効な日付値に変換する必要がありますSTR_TO_DATE
SELECT *
FROM tableName
WHERE STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p') ....
2つの違い:
STR_TO_DATE-文字列を日付に変換します
DATE_FORMAT-日付を文字列に変換します