2016-08-12 19 views
0

すべてのレコードを等しく、2014-08-31より小さく、2014-08-01より大きくする必要があります。MYSQL less関数が正常に動作しないより

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate <= '2014-08-31'; 

表の値は

createdDate 
2014-08-01 05:14:52 
2014-08-27 05:15:08 
2014-08-29 02:54:06 
2014-08-30 05:57:12 
2014-08-31 07:56:13 

ここに私の出力は、私が2014年8月31日午前7時56分13秒この値を取得することはできません

2014-08-01 05:14:52 
2014-08-27 05:15:08 
2014-08-29 02:54:06 
2014-08-30 05:57:12 

ました。 誰でも知っているのはなぜですか?

+0

あなたは文字列と日付が同じものではありませんことを実現します、あなたは何?あなたはこのすべてが適切に機能するためには日付を使用する必要があります。また、 '2014-08-31 07:56:13'は実際に' 2014-08-31 00:00:00'の後にあるので、以下の場合はこの場合正しく動作します。 – ppeterka

+0

はい、これを得ました。ありがとう@ppetereka – Darshan

答えて

2

問題は'2014-08-31''2014-08-31 00:00:00'

として解釈される最速の修正が可能ということです。これは、9月1日前にすべてをリストし

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate < '2014-09-01'; 

正しい解決策は、文字列の代わりに日付を使用することです。

+0

また私は別の解決策を得ました。私はまた、カレンダーを使用して1つの日付を追加することができます。 のような日付= 2014-08-31 1日追加する必要があります2014-09-31。 これも解決に役立ちます。 – Darshan

2

これは解決する必要があります。..

SELECT * FROM table where user_id = 322 and 
createdDate >= str_to_date('08/01/2014 00:00:00','%m/%d/%Y %H:%i:%s') 
and createdDate <= ('08/31/2014 23:59:59','%m/%d/%Y %H:%i:%s'); 
関連する問題