我必须根据TransDate和ValueDate
获取记录根据以下标准获取记录:
我的同事尝试使用UNION以及以下查询
select * from Sales where ValueDate < '2016-03-21' and ValueDate >= '2016-03-20'
and TransDate < '2016-03-21'
Union
select * from Sales where TransDate < '2016-03-21' and TransDate >= '2016-03-20'
and ValueDate < '2016-03-21'
但我觉得用以下方式重写该查询
select * from Sales where ((ValueDate < '2016-03-21' and ValueDate >= '2016-03-20'
and TransDate < '2016-03-21') or (TransDate < '2016-03-21'
and TransDate >= '2016-03-20' and ValueDate < '2016-03-21'))
注意:TransDate和ValueDate都是时间戳数据类型。
请建议两个查询的区别,否则,如果有其他方法最好建议我。
答案 0 :(得分:0)
两个查询之间的结果没有区别。但时间成本时间可能不同。
我认为第二个会更快。
这是另一种选择:
select * from Sales
where
(DATE(ValueDate) = '2016-03-20' and TransDate < '2016-03-21') or
(DATE(TransDate) = '2016-03-20' and ValueDate < '2016-03-21')