在 MySQL 我有这个查询
SELECT DISTINCT date, descr FROM book ORDER BY date
日期格式yyyy-mm-dd
我只想选择2012 年 1 月的书籍。我曾尝试使用like
,但这不起作用。
有任何想法吗?
在 MySQL 我有这个查询
SELECT DISTINCT date, descr FROM book ORDER BY date
日期格式yyyy-mm-dd
我只想选择2012 年 1 月的书籍。我曾尝试使用like
,但这不起作用。
有任何想法吗?
使用DATE_FORMAT
功能
SELECT DISTINCT date, descr FROM book
WHERE DATE_FORMAT(date, '%Y %m') = DATE_FORMAT('2012-01-01', '%Y %m')
ORDER BY date
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;
SELECT DISTINCT date, descr FROM book
WHERE date >= '2012-01-01'
AND date <= '2012-01-31'
ORDER BY date;
您可以在此处使用>=
和<=
运算符。检查以下代码:
SELECT *
FROM book
WHERE date >= '2012-01-01' AND date <= '2012-01-31'
试试这个:
SELECT DISTINCT date, descr FROM book WHERE YEAR(date) = '2012' and MONTH(date) = '1'
如果您的“日期”列是 MySQL 日期字段,则此方法有效。
如果您坚持要使用 LIKE 语法,可以先将日期转换为 CHAR:
SELECT DISTINCT date, descr FROM book WHERE CAST(date AS char) LIKE '2012-01%' ORDER BY date;
使用 like 也可以。使用@hims056 fiddle,您可以对其进行测试:
SELECT DISTINCT ID, date FROM book
WHERE date LIKE '2012-01%'
ORDER BY date;
但是,通常不使用 like 进行日期过滤,对我来说使用 >= 和 <= 或两者之间更自然。此外,还有性能优势。
SELECT DISTINCT date, descr
FROM book
WHERE YEAR = DATE(NOW()) AND MONTH(date) = '1'
这会给你今年的书