MySQL查询在开始日期和结束日期之间获取结果

时间:2013-04-12 10:07:00

标签: php mysql sql mysqli

我有两个日期说start_date = 2013-04-12end_date = 2013-04-30
 我的表格包含start_date = 2013-04-12end_date = 2013-04-16

的行

我想获取开始日期更长的记录2013-04-12且end_date小于2013-04-30。其中包括2013-04-16作为end_date的上述记录

我尝试过这个查询

SELECT * FROM TABLE_NAME WHERE (start_date <='2013-04-12' AND end_date >='2013-04-30')不给出任何结果但是如果我把end_date 2013-04-15它工作正常

5 个答案:

答案 0 :(得分:4)

SELECT
    *
FROM
    (
        SELECT
            '2013-04-12' as `start_date`,
            '2013-04-16' as `end_date`
    ) `sub`
WHERE
    (`start_date` BETWEEN '2013-04-12' AND '2013-04-30')
    AND
    (`end_date` BETWEEN '2013-04-12' AND '2013-04-30')

BETWEEN更可靠

答案 1 :(得分:2)

如果你想让start_date GREATER OR EQUAL 2013-04-12和end_date LESSER OR EQUAL,那么你的算符错了:

start_date <='2013-04-12' AND end_date >='2013-04-30'

你应该使用&gt; =用于start_date而使用&lt; =用于end_date 像这样:

start_date >='2013-04-12' AND end_date <='2013-04-30'

答案 2 :(得分:1)

我认为您使用了错误的运算符... start_date大于(&gt; =)end_date小于等于(&lt; =)

SELECT * FROM TABLE_NAME WHERE (start_date >='2013-04-12' AND end_date <='2013-04-30')

答案 3 :(得分:0)

试试这个,

SELECT * FROM TABLE_NAME WHERE转换(varchar,start_date,101)&gt; '04 / 12/2013')并转换(varchar,end_date,101)&lt; '04 / 30/2013')

答案 4 :(得分:0)

我愿意:     SELECT * FROM table_name WHERE start_date BETWEEN'2013-04-12'EN'2013-04-30'