MySQL查询选择值在日期范围内的所有行
我有以下MySQL查询:MySQL查询选择值在日期范围内的所有行,mysql,date,range,Mysql,Date,Range,我有以下MySQL查询: SELECT s.student_socialnr, s.student_lastname, s.student_firstname, cs.city_name, scp.cpl_startdate, scp.cpl_enddate, scp.cpl_invoice, cu.customer_name, scp.cpl_coursename FROM students s INNER JOIN studentcourseplan scp ON scp
SELECT
s.student_socialnr, s.student_lastname, s.student_firstname,
cs.city_name,
scp.cpl_startdate, scp.cpl_enddate, scp.cpl_invoice,
cu.customer_name, scp.cpl_coursename
FROM students s
INNER JOIN studentcourseplan scp ON scp.student_id = s.student_id
INNER JOIN cityselections cs ON cs.city_id = s.student_city_id
INNER JOIN customers cu ON cu.customer_id = s.student_customer_id
这将输出如下内容:
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| student_socialnr | student_lastname | student_firstname| city_name | cpl_startdate | cpl_enddate | cpl_invoice | customer_name | cpl_coursename |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Doe | John | Dallas | 2012-06-01 | 2012-06-30 | 1337 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Johnsson | Derp | Texas | 2012-02-01 | 2012-07-28 | 5000 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
| 000000-0000 | Derpina | Lisa | New York | 2013-01-01 | 2013-04-01 | 2001 | The customer | The course |
+------------------+------------------+------------------+-----------+---------------+--------------+-------------+---------------+----------------+
我没有两个问题。我希望能够在cpl\u startdate
和cpl\u enddate
字段上设置过滤器。因此,例如,如果用户设置过滤器cpl_startdate='2012-01-01'
和cpl_enddate='2012-12-31'
,则应输出日期在该范围内的所有行。因此,使用上面的示例,它应该只输出前两行,因为它们在选定的日期范围内
我试过了
.. WHERE scp.cpl_startdate <= '2012-01-01' AND scp.cpl_enddate >= '2012-12-31'
。。其中scp.cpl_startdate='2012-12-31'
。。没有运气。我可以在之间使用MySQL语法吗?
另外,是否可以计算两个日期范围之间的天数?我想输出跨度之间天数的整数。不一定在同一查询中。切换比较符号:
.. WHERE scp.cpl_startdate >= '2012-01-01' AND scp.cpl_enddate <= '2012-12-31'
DATEDIFF(expr1,expr2)返回expr1-expr2之间的日期差。请参阅MySQL中的更多内容
DATEDIFF(scp.cpl_enddate, scp.cpl_startdate) AS DaysDifference