我需要一些SQL Query帮助.
我试图选择表test_table中的所有记录,这些记录不适合两个日期'2009-12-15'和'2010-01-02'.
这是我的表结构:
`start_date` date NOT NULL default '0000-00-00',
`end_date` date NOT NULL default '0000-00-00'
-----------------------------
**The following record should not be selected:**
`start_date`, `end_date`
'2003-06-04', '2010-01-01'
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT *
FROM `test_table`
WHERE
CAST('2009-12-15' AS DATE) NOT BETWEEN start_date and end_date
AND
CAST('2010-01-02' AS DATE) NOT BETWEEN start_date and end_date
Run Code Online (Sandbox Code Playgroud)
知道我的查询选择错误记录的原因吗?我应该将查询中的值的顺序更改为:
start_date NOT BETWEEN CAST('2009-12-15' AS DATE) and CAST('2010-01-02' AS DATE)
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助
小智 26
尝试怎么样:
select * from 'test_table'
where end_date < CAST('2009-12-15' AS DATE)
or start_date > CAST('2010-01-02' AS DATE)
Run Code Online (Sandbox Code Playgroud)
这将返回所有与日期范围不重叠的日期范围.
你的逻辑是倒退的.
SELECT
*
FROM
`test_table`
WHERE
start_date NOT BETWEEN CAST('2009-12-15' AS DATE) and CAST('2010-01-02' AS DATE)
AND end_date NOT BETWEEN CAST('2009-12-15' AS DATE) and CAST('2010-01-02' AS DATE)
Run Code Online (Sandbox Code Playgroud)