gpt4 book ai didi

informix - 我尝试运行此程序时收到 "Invalid month in date"?

转载 作者:行者123 更新时间:2023-12-02 20:02:39 24 4
gpt4 key购买 nike

我正在尝试针对 Informix 运行以下 db 命令:

delete from table1
where u_id in (select u_id
from table2
where c_id in (select c_id
from ptable
where name = 'Smith'
and dob = '29-08-1946'));

我将其作为字符串传递给 MS Data Application block 中的 db.ExecuteNonQuery 方法,但出现了上述错误?

最佳答案

要使日期格式“29-08-1946”正常工作,您需要将 DBDATE 环境变量设置为“DMY4-”(或“DMY4/”)等值。这些是英国的标准变体(我使用它们多年;我现在专门使用“Y4MD-”,它匹配 ISO 8601:2004(日期格式)和 ISO 9075 (SQL),除非在调试其他人的环境时)。还有其他环境变量可能会影响日期格式 - 事实上有很多 - 但 DBDATE 优先于其他变量,因此它是解决问题的大锤。

问题之一是使用纯字符串的表示法无法在美国和英国(和 ISO)的 DBDATE 设置之间移植。如果您可以选择,日期的中性构造函数是 MDY() 函数:

WHERE dob = MDY(8,29,1946)

无论 DBDATE 的设置如何,这都有效。您也可以使用 TO_DATE() :

SELECT TO_DATE('29-08-1946', '%d-%m-%Y') FROM dual;

这为我生成了“1946-08-29 00:00:00.00000” - 该函数生成一个 DATETIME YEAR TO FRACTION(5) 值,但这些值可以可靠地转换为 Informix 中的 DATE 值。

您还可以使用 DATE() 函数或显式转换为 DATE(CAST('29-08-1946' AS DATE) 或 '29-08-1946'::DATE),但这两者都是受用户所在区域的影响。

关于informix - 我尝试运行此程序时收到 "Invalid month in date"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1560915/

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