2011-08-14 13 views
1

これらの結果はどのように意味がありますか?わかりません。
日付が> 2010のスレッドがないため、たとえば、最後のクエリで空のセットを返さないでください。なぜそれは2003年の結果を返すのですか?MySQLの日時クエリに奇妙な問題があります

mysql> SELECT * 
     FROM thread 
     WHERE newsgroup_id = '64654' 
     AND 'thread_date' < '2010-09-10 21:43:05' 
     LIMIT 1; 

空集合(0.00秒)

mysql> SELECT * 
     FROM thread 
     WHERE newsgroup_id = '64654' 
     AND 'thread_date' < '2000-09-10 21:43:05' 
     LIMIT 1; 

空集合(0.00秒)セット内

mysql> SELECT * 
     FROM thread 
     WHERE newsgroup_id = '64654' 
     AND 'thread_date' > '2000-09-10 21:43:05' 
     LIMIT 1; 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 
| newsgroup_id | thread_id | postcount | hash  | thread_date   | thread_date_last  | thread_title     | title_has_valid_charset | 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 
|  64654 |   1 |   0 | O2gvcPRl | 2003-06-06 22:51:24 | 0000-00-00 00:00:00 | Vendo fotodigit 2.1 megapixel |      0 | 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 

1行(0.00秒)

mysql> SELECT * 
     FROM thread 
     WHERE newsgroup_id = '64654' 
     AND 'thread_date' > '2010-09-10 21:43:05' 
     LIMIT 1; 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 
| newsgroup_id | thread_id | postcount | hash  | thread_date   | thread_date_last | thread_title     | title_has_valid_charset | 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 
|  64654 |   1 |   0 | O2gvcPRl | 2003-06-06 22:51:24 | 0000-00-00 00:00:00 | Vendo fotodigit 2.1 megapixel |      0 | 
+--------------+-----------+-----------+----------+---------------------+---------------------+---------------------------------+-------------------------+ 

1行セット(0.00秒)

+1

を私が正しいんだ場合、あなたはこれを行うことはできません。これは単なるASCIIの比較(テキストベース)です。そのため、あなたはこれらの奇妙で正しい「比較」を行っています。 mysqlの日付/時刻を比較する方法を調べる – PhD

+1

@Nupul:datetimeをMySQLの文字列と同じように比較できます。 –

+0

@ypercube:私の悪い...明らかになっているはずです。私は全体的な比較が文字列ベースであることを意味しています(LHSとRHSの両方が '<,>') – PhD

答えて

7

引用符が間違っています。 MySQLは文字列 "thread_date"を比較していると考えます。ここではどのようにすべきである:

`thread_date` > '2010-09-10 21:43:05' 

この方法でMySQLは、フィールドthread_dateを意味することを知っていると、式の右側の日付と比較します。

+2

または逆引用符が全くありません: '... AND thread_date> '2010-09-10 21:43:05' ...' –

0

'thread_date'は文字列であり、そのフィールドの値ではありません。

あなたは意味:

`thread_date` > '2010-09-10 21:43:05'