18

MySQLではこのクエリがあります

SELECT DISTINCT date, descr FROM book ORDER BY date

日付は形式ですyyyy-mm-dd

2012年1月の本だけを選びたいです。使用しようとしましlikeたが、うまくいきません。

何か案は?

4

6 に答える 6

36

DATE_FORMAT機能の使用

SELECT DISTINCT date, descr FROM book 
WHERE DATE_FORMAT(date, '%Y %m') = DATE_FORMAT('2012-01-01', '%Y %m')
ORDER BY date

または関数を使用MONTHしてYEAR

SELECT DISTINCT date, descr FROM book 
WHERE Month(date) = Month('2012-01-01')
AND Year(date) = Year('2012-01-01')
ORDER BY date;

またはBETWEEN関数を使用して

SELECT DISTINCT date, descr FROM book 
WHERE date BETWEEN '2012-01-01'
AND '2012-01-31'
ORDER BY date;

または<=and>=演算子を使用して

SELECT DISTINCT date, descr FROM book 
WHERE date >= '2012-01-01'
AND date <= '2012-01-31'
ORDER BY date;

このSQLFiddleを参照してください

于 2012-08-31T13:13:09.957 に答える
6

>=ここでand<=演算子を使用できます。以下のコードを確認してください。

SELECT *
FROM book
WHERE date >= '2012-01-01' AND date <= '2012-01-31'
于 2012-08-31T13:13:27.940 に答える
4

LIKE構文を使用することに固執する場合は、最初に日付をCHARに変換できます。

SELECT DISTINCT date、descr FROM book WHERE CAST(date AS char)LIKE '2012-01%' ORDER BY date;

于 2013-01-14T09:42:11.890 に答える
4

これを試して:

SELECT DISTINCT date, descr FROM book WHERE YEAR(date) = '2012' and MONTH(date) = '1'

これは、「日付」列が MySQL 日付フィールドである場合に機能します。

于 2012-08-31T13:12:35.867 に答える
0
SELECT DISTINCT date, descr
FROM book
WHERE YEAR = DATE(NOW()) AND MONTH(date) = '1'

これにより、今年の書籍が提供されます

于 2012-08-31T13:16:14.973 に答える