根据月份和年份定期mysql在两个日期之间进行选择

时间:2014-06-20 16:43:48

标签: php mysql sql select

如何实现MySQL以在其间选择数据。假设我有一个变量:

$dateA = '2014-06-25'
$dateB = '2014-08-26'

我做了一个像这样的MySQL语法示例:

"select * from table where dateA >= $dateA and dateB <= $dateB"

所以我想根据月份和年份使用这两个日期选择MySQL,但不包括日期本身:

有关于此的任何想法吗?

更新

例如,我想要做的就是基本上这样:

"select * from table where dateA >= '2014-06' and dateB <= '2014-08'"

这基本上就是我想要的。

8 个答案:

答案 0 :(得分:3)

您可以使用字符串比较。

DATE_FORMAT(dateA,'%Y%m')应该返回如下日期:201406。您还需要更改变量的格式或对它们使用相同的方法。

where DATE_FORMAT(dateA,'%Y%m') >= DATE_FORMAT($dateA,'%Y%m') and 
DATE_FORMAT(dateB,'%Y%m') <= DATE_FORMAT($dateB,'%Y%m')

答案 1 :(得分:2)

select *
from table
where dateA between date_format( $dateA, '%y-%m-01' ) and last_day( $dateB );

答案 2 :(得分:0)

select * from table where YEAR(dateA) > YEAR($dateA) and YEAR(dateB) < YEAR($dateB) 
    AND MONTH(dateA) > MONTH($dateA) and MONTH(dateB) < MONTH($dateB)

那里可能会有更高效的东西,但这也会有效。

答案 3 :(得分:0)

我建议在php中进行更改,因为这样可以为更广泛的输入启用mysql查询缓存:

$dateA = date("Y-m-01", strtotime('2014-06-25'));
$dateB = date("Y-m-t", strtotime('2014-08-26'));

答案 4 :(得分:0)

$dateA = '2014-06-25';
$dateB = '2014-08-26';
$dateA_month = '2014-02-01';
$dateB_month = '2014-02-31';
"select * from table where dateA >= $dateA_month and dateB <= $dateB_month";

我在2月份故意写了这个例子。即使有问题的月份没有以31日结束,这个选择器也能很好地工作。期待来自日历粉丝的downvotes:)

答案 5 :(得分:0)

使用以下SQL语句选择两个日期之间的数据: -

$dateA = date('Y-m-d', strtotime('2014-06-25'));
$dateB = date('Y-m-d', strtotime('2014-08-26'));


SELECT * FROM table_name WHERE DATE_FORMAT(date_created, '%Y-%m-%d') 

BETWEEN $dateA AND $dateB;

答案 6 :(得分:0)

您可以使用此

WHERE (someField BETWEEN '2016-01-30 14:15:55' AND '2016-09-29 10:15:55')

答案 7 :(得分:-1)

试试这个:

"select * from table where [datetime_column] between " . $dateA . " and " .$dataB