gpt4 book ai didi

sql - 用问题中给出的日期做数学

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

以下是查询和查询附带的代码。我无法弄清楚如何在问题中使用日期 31-dec-2006。

对于每个出租属性(property),列出地址,包括街道、城市、州。还列出租赁类型和列为“列出的天数”的天数。按租赁类型升序和列出的天数降序排列的订单结果。不要使用今天的日期来确定列出的天数,而是使用 31-dec-2006

问题是我没有收到此查询的任何结果。我相信我在 where 语句中做错了什么。我不确定如何为日期赋值。

select rp_street, rp_city, rp_state, rp_type, (rp_datelisted - sysdate) as "Number of Days Listed"  
from rentproperty
where sysdate = '31-dec-2006'
order by rp_type asc, "Number of Days Listed" desc;

最佳答案

处理日期时,请处理日期,而不是字符串。 '31-dec-2006' 只是一个字符串。它看起来像一个日期(对我们人类而言),Oracle 将尝试将它转换为一个日期(如果可以的话),但您永远无法确定它是否有效。例如,它在我的数据库中不起作用:

SQL> select count(*) From emp where hiredate < '31-dec-2006';
select count(*) From emp where hiredate < '31-dec-2006'
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected

如果我修复几件事,它就会起作用:

SQL> alter session set nls_date_language = english;

Session altered.

SQL> alter session set nls_date_format = 'dd-mon-yyyy';

Session altered.

SQL> select count(*) From emp where hiredate < '31-dec-2006';

COUNT(*)
----------
14

SQL>

因此,要么使用日期文字(总是看起来像 date 'yyyy-mm-dd'),要么将 TO_DATE 函数应用于字符串,并使用适当的格式掩码,例如to_date('31.12.2006', 'dd.mm.yyyy') 并且您的查询将始终有效。


这是您可以做的(我缩短了列列表); RENTPROPERTY CTE 列出了一些示例数据;您需要从第 7 行开始的代码。

SQL> with rentproperty (rp_street, rp_type, rp_datelisted) as
2 (select 'Oak street' , 'Type A', date '2000-01-25' from dual union all
3 select '31st street', 'Type B', date '2001-10-30' from dual union all
4 select 'Elm street' , 'Type B', date '2004-08-25' from dual union all
5 select 'Bee street' , 'Type A', date '2006-11-30' from dual
6 )
7 select rp_street,
8 rp_type,
9 (date '2006-12-31' - rp_datelisted) days_listed
10 from rentproperty
11 where rp_datelisted < date '2006-12-31'
12 order by rp_type asc, days_listed desc;

RP_STREET RP_TYP DAYS_LISTED
----------- ------ -----------
Oak street Type A 2532
Bee street Type A 31
31st street Type B 1888
Elm street Type B 858

SQL>

关于sql - 用问题中给出的日期做数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55770515/

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