MySQL选择日期的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL选择日期的行相关的知识,希望对你有一定的参考价值。

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

或使用MONTHYEAR函数

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;

See this SQLFiddle

另一答案

你可以在这里使用>=<=运算符。检查以下代码:

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;

另一答案
SELECT DISTINCT date, descr
FROM book
WHERE YEAR = DATE(NOW()) AND MONTH(date) = '1'

这将给你今年的书

以上是关于MySQL选择日期的行的主要内容,如果未能解决你的问题,请参考以下文章

Mysql按日期时间的日期部分分组,并为每个日期选择具有最大日期时间的行

MySql 选择日期相差 30 分钟的行

SQL查询选择年份在两个日期之间的行

通过 id mysql 查找具有最新日期的行

日期选择器对话框在片段中不起作用[关闭]

Mysql,根据日期选择行