gpt4 book ai didi

SQL - 如何统计某一年的数据数量?

转载 作者:行者123 更新时间:2023-12-02 19:04:19 25 4
gpt4 key购买 nike

我正在尝试计算 2019 年的订单数量,但总是收到错误

ORA-01861: literal does not match format string

我尝试运行的 SQL 是:

SELECT COUNT(*) 
FROM Order_tab
WHERE Order_Date = '%2019';

表格格式为

create table Order_tab 
(
Order_ID number (11,0) not null,
Order_Date date DEFAULT SYSDATE,
Customer_ID number (11,0),

constraint Order1_PK
primary key (Order_ID),

constraint Order1_FK
foreign key (Customer_ID) references Customer_tab(Customer_ID)
);

我添加到该表的数据是:

insert into Order_tab values (1010, '06/12/2017', 5);
insert into Order_tab values (1011, '06/12/2017', 1);
insert into Order_tab values (1012, '06/12/2017', 5);
insert into Order_tab values (1013, '06/12/2017', 1);
insert into Order_tab values (1014, '06/12/2017', 2);
insert into Order_tab values (1015, '06/13/2017', 5);
insert into Order_tab values (1016, '06/13/2017', 1);
insert into Order_tab values (1017, '07/20/2019', 12);
insert into Order_tab values (1018, '08/03/2018', 11);
insert into Order_tab values (1019, '01/29/2019', 6);
insert into Order_tab values (1020, '02/14/2019', 9);
insert into Order_tab values (1021, '03/24/2019', 11);
insert into Order_tab values (1022, '06/14/2019', 15);
insert into Order_tab values (1023, '10/31/2019', 7);
insert into Order_tab values (1024, '01/31/2020', 7);
insert into Order_tab values (1025, '10/05/2020', 14);
insert into Order_tab values (1026, '01/01/2020', 13);

最佳答案

order_date 不是字符串,而是日期。因此,引擎尝试将 '%2019' 向上转换为 date 以执行比较。但'%2019' 不是有效的日期 表示形式。

此外,即使 order_date 是一个字符串(这是错误的),您使用它的方式也没有意义。您可能想要 LIKE 而不是 =

无论如何,使用范围比较。

SELECT count(*)
FROM order_tab
WHERE order_date >= to_date('2019-01-01', 'YYYY-MM-DD')
AND order_date < to_date('2020-01-01', 'YYYY-MM-DD');

这样做的优点是它可以使用 order_date 上的索引,而从 order_date 中提取年份并将其与 2019 年(作为数字或字符串)进行比较的方法则不能.

关于SQL - 如何统计某一年的数据数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65257355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com