gpt4 book ai didi

sql - 提取(从 'Now' 开始的一周)错误

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

我在我的 raspberrypi 上运行 firebird 2.5 superclassic。我执行以下查询并出现以下错误:

SELECT foodmanager1.F_US_FIRSTNAME,foodmanager1.F_US_LASTNAME, 
foodmanager1.F_US_PICTURE_URL,
foodmanager2.F_US_FIRSTNAME, foodmanager2.F_US_LASTNAME,
foodmanager2.F_US_PICTURE_URL,
duty.F_US_FIRSTNAME, duty.F_US_LASTNAME,
duty.F_US_PICTURE_URL,
a.F_FD_DATE from
T_FOOD_DUTY a
inner join T_USER foodmanager1 on a.F_US_ID1 = foodmanager1.F_US_ID
inner join T_USER foodmanager2 on a.F_US_ID2 = foodmanager2.F_US_ID
inner join T_USER duty on a.F_US_ID3 = duty.F_US_ID
where extract(week from a.F_FD_DATE) = extract(week from 'Now')

出现这个错误:

Specified EXTRACT part does not exist in input datatype

SQL 错误代码=~105。

我知道问题出在 extract(week from 'Now') 上,因为当我用数字手动替换它时,我确实得到了一些结果。

知道问题出在哪里,或者您有其他选择吗?

最佳答案

问题是 extract 接受任何数据类型,但只适用于类型 datetimetimestamp。在此上下文中,'Now' 只是一个 char(3),因此无法使用 extract(它无法从 char 中提取数据> 类型)。

混淆源于以下事实:在某些情况下(例如,赋值或显式转换为 datetimetimestamp),'Now' 将产生当前日期/时间。它在这种情况下不起作用,因为 Firebird 不知道它需要三种类型中的哪一种;理论上 extract 接受任何类型,它实际能做什么取决于它接收的类型。

您需要明确地将其强制转换为日期(或时间戳):

  1. 使用显式转换:

    extract(week from cast('Now' as date))
  2. 使用类型介绍器(也称为速记转换):

    extract(week from date'Now')
  3. 或者,按照 answer of ain 中的建议,使用 SQL 标准“函数”current_datecurrent_timestamp:

    extract(week from current_date)

关于sql - 提取(从 'Now' 开始的一周)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196772/

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