无法编写检索特定日期之间的值的查询
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
周围的单引号。大概这是一个数字。最好不要混类型。
此外,比较使用>=
和<
。这是有目的的上面的代码适用于日期和带时间分量的日期。
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
周围的单引号。大概这是一个数字。最好不要混类型。
此外,比较使用>=
和<
。这是有目的的上面的代码适用于日期和带时间分量的日期。