如何实现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'"
这基本上就是我想要的。
答案 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