0

「2012-02」で始まるmysqlのすべてのフィールドを選択するにはどうすればよいですか?

私が試したこと:

mysql> SELECT title,id FROM dle_post WHERE approve='1' AND date = '2012-02-13 21:35:00';
+-------------------------------------------------+----+
| title                                           | id |
+-------------------------------------------------+----+
| test title                                      |  7 |
+-------------------------------------------------+----+


mysql> SELECT title,id FROM dle_post WHERE approve='1' AND date='2012-02%';
Empty set, 2 warnings (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+-----------------------------------------------------------------+
| Level   | Code | Message                                                         |
+---------+------+-----------------------------------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2012-02%' for column 'date' at row 1 |
| Warning | 1292 | Incorrect datetime value: '2012-02%' for column 'date' at row 1 |
+---------+------+-----------------------------------------------------------------+
4

4 に答える 4

2

理想的には、日付は文字列ではなく日付として扱われるべきです。このクエリは、2012年2月のすべての行を返し、LIKE %クエリよりもパフォーマンスが優れている必要があります。

SELECT title, id
FROM dle_post
WHERE approve = 1 
AND date >= '2012-02-01' 
AND date <  '2012-02-01' + INTERVAL 1 MONTH
于 2012-12-12T17:06:49.910 に答える
0

への変更

SELECT title,id FROM dle_post WHERE approve='1' AND date LIKE '2012-02%';
于 2012-12-12T17:06:30.287 に答える
0

like演算子を使用して、次のような値を確認します

SELECT title,id FROM dle_post WHERE approve='1' AND date LIKE '2012-02%';
于 2012-12-12T17:07:02.770 に答える
0

やってみました

date LIKE '2012-02%'

それ以外の

date='2012-02%'

また、DATE_FORMAT(date、format)を使用して日付を文字列にキャストする必要がある場合もあります

参照:http ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

于 2012-12-12T17:10:49.890 に答える