无法编写检索特定日期之间的值的查询

Not being able to write a query that retrieves values between certain dates

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

month/day/year

我会在 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 中,您将删除日期关键字:

select t.*
from my_table t
where t.product_number = 86354 and 
      period_v >= '2019-01-01' and
      period_v < '2019-02-01';

请注意,我删除了 86354 周围的单引号。大概这是一个数字。最好不要混类型。

此外,比较使用>=<。这是有目的的上面的代码适用于日期和带时间分量的日期。