提前感谢任何建议或提示!
我在mysql数据库table1
中有一张预订表。它包含开始日期和结束日期。
我有另一个表table2
,其中包含我需要获取的信息,但仅当特定日期不在table1
中任何行的任何日期之间时。
一个例子;
select table2.testfield
FROM table2, table1
WHERE '2011-02-24 18:00:00'
NOT BETWEEN table1.start
AND table1.finish
然而我无法让它发挥作用!有什么建议吗?
答案 0 :(得分:9)
这应该有用,但应该看起来更像
select table2.testfield
FROM table2, table1
WHERE table1.YourField = '2011-02-24 18:00:00'
AND
NOT BETWEEN table1.start AND table1.finish
这也假设您的table1.start
和table1.finish
字段属于DateTime
类型。如果他们不是你可以尝试铸造字段
select table2.testfield
FROM table2, table1
WHERE table1.YourField = '2011-02-24 18:00:00'
AND
NOT BETWEEN Cast(table1.start as DateTime) AND Cast(table1.finish As DateTime)
编辑查看您的问题我意识到日期可能不是数据库值:)所以您的方法应该可以工作,但您可能需要将字符串转换为日期时间。
答案 1 :(得分:2)
那样的东西呢?
select table2.testfield
FROM table2, table1
WHERE
table1.start > convert(datetime,'2011-02-24 18:00:00')
or table1.finish < convert(datetime,'2011-02-24 18:00:00')