我有两个日期说start_date = 2013-04-12
和end_date = 2013-04-30
我的表格包含start_date = 2013-04-12
和end_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它工作正常
答案 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'