1

属性「datum」(varchar(25))を含むテーブルを持つデータベースが与えられました。データベースの設計が不十分なため、この列には文字列形式の日付値が入力されます。次に例を示します。

「2013年2月25日、3:47p」

テーブルにクエリを実行し、すべての行を日ごとにグループ化する必要があります(上記の例では25)。これを行うには、DATE_FORMAT(datum、'')関数を使用する必要がありますか?その関数を使用するたびに、null値を取得します。

4

2 に答える 2

2

STR_TO_DATE()機能(ドキュメント)を試しましたか?

DATE_FORMAT()これは、文字列ではなく、最初のパラメーターとして日付値をとる逆です。次に、それを使用して正しい日の値を取得できます。

これがあなたのクエリに一致するSQLコマンドです。私はテストして動作しました。

SELECT * 
FROM tablename 
WHERE DATE_FORMAT( STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p'), '%d' ) = 25;
于 2013-02-26T13:46:55.800 に答える
2

文字列であるため、を使用して有効な日付値に変換する必要がありますSTR_TO_DATE

SELECT  *
FROM    tableName
WHERE   STR_TO_DATE(datum,'%M %e, %Y, %h:%i %p') ....

2つの違い:

STR_TO_DATE-文字列を日付に変換します
DATE_FORMAT-日付を文字列に変換します

于 2013-02-26T13:47:02.447 に答える