0

私はこのクエリを持っています:

SELECT * 
From checkfinale 
where AssociateID = 51 AND 
      `CompletedDate` >= '16/04/2012' AND 
     `CompletedDate` <= '22/06/2012'

ComplitedDateはvarcharタイプです。ビューを使用しているためです。私がそれを実行しようとしているとき、それらの日付は状態に影響を与えません。エラーはありますか?

4

5 に答える 5

1

何か不足していない限り、CompletedData が varchar 型の場合、日付の比較は機能しません。日付やタイムスタンプではなく、文字列を比較しているだけです

于 2012-06-21T05:26:48.040 に答える
1

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'
于 2012-06-21T05:28:21.517 に答える
1

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'
于 2012-06-21T05:28:30.970 に答える
0

文字列を日付として比較する必要がある場合は、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を参照してください

于 2012-06-21T05:29:54.293 に答える
0

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') )
于 2012-06-21T05:27:57.350 に答える