私はこのクエリを持っています:
SELECT *
From checkfinale
where AssociateID = 51 AND
`CompletedDate` >= '16/04/2012' AND
`CompletedDate` <= '22/06/2012'
ComplitedDateはvarcharタイプです。ビューを使用しているためです。私がそれを実行しようとしているとき、それらの日付は状態に影響を与えません。エラーはありますか?
何か不足していない限り、CompletedData が varchar 型の場合、日付の比較は機能しません。日付やタイムスタンプではなく、文字列を比較しているだけです
CompletedDate を日付に変換して実行します。
したがって、クエリは次のようになります
SELECT * From checkfinale
where AssociateID = 51 AND
STR_TO_DATE(CompletedDate,'%d/%m/%Y') >= '16/04/2012'
AND STR_TO_DATE(CompletedDate,'%d/%m/%Y') <= '22/06/2012'
Date
タイプを使用して日付を保存してください
または、日付STR_TO_DATE
をフォーマットするvarchar
ために使用します。
SELECT *
From checkfinale
where AssociateID = 51 AND
STR_TO_DATE(`CompletedDate`,'%d/%m/%Y') >= '16/04/2012' AND
STR_TO_DATE(`CompletedDate`,'%d/%m/%Y') <= '22/06/2012'
文字列を日付として比較する必要がある場合は、CAST() 関数を使用します。
SELECT *
From checkfinale
where AssociateID = 51 AND
CAST(`CompletedDate` AS DATE) >= '16/04/2012' AND
CAST(`CompletedDate` AS DATE) <= '22/06/2012'
http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_castを参照してください
STR_TO_DATE()関数を使用してみてください。
これは、DATE_FORMAT() 関数の逆です。文字列 str とフォーマット文字列 format を取ります。STR_TO_DATE() は、フォーマット文字列に日付と時刻の両方の部分が含まれる場合は DATETIME 値を返し、文字列に日付または時刻の部分のみが含まれる場合は DATE または TIME 値を返します。str から抽出された日付、時刻、または日時の値が不正な場合、STR_TO_DATE() は NULL を返し、警告を生成します。
これを試して:
SELECT *
FROM checkfinale
WHERE AssociateID = 51 AND
( STR_TO_DATE(CompletedDate,'%d/%m/%Y') >= date('2012-04-06') AND
STR_TO_DATE(CompletedDate,'%d/%m/%Y') <= date('2012-06-22') )