SELECT * from my_table where product_number = '86354' and period_v in ('1/1/2019','1/31/2019');
我也尝试过:
SELECT * from my_table where product_number = '86354' and period_v between '1/1/2019' and '1/31/2019'
SELECT * from my_table where product_number = '86354' and period_v between #1/1/2019#, #1/31/2019#
SELECT * from my_table where product_number = '86354' and period_v between 1/1/2019 and 31/1/2019
我在sql数据库中的日期具有以下格式:
2/20/2019
月/日/年
答案 0 :(得分:2)
我会在Oracle中推荐
select t.*
from my_table t
where t.product_number = 86354 and
period_v >= date '2019-01-01' and
period_v < date '2019-02-01';
如果要存储您被解释为日期的字符串,则应该修复数据模型。与几乎所有其他数据库一样,Oracle具有一种仅用于存储日期的类型,方便地称为date
。您可以随时转换值:
to_date(period_v, 'DD/MM/YYYY') >= date '2019-01-01' and
to_date(period_v, 'DD/MM/YYYY') < date '2019-02-01';
尽管可以做到,但我强烈建议您使用正确的数据类型。
在MySQL中,您将删除date关键字:
select t.*
from my_table t
where t.product_number = 86354 and
period_v >= '2019-01-01' and
period_v < '2019-02-01';
请注意,我删除了86354
周围的单引号。大概是个数字。最好不要混合类型。
此外,比较使用>=
和<
。这是有目的的上面的代码适用于日期和具有时间成分的日期。