gpt4 book ai didi

php - PostgreSQL 将 X 个月添加到日期

转载 作者:行者123 更新时间:2023-11-29 12:43:07 24 4
gpt4 key购买 nike

我尝试将 X 月添加到当前日期时间:

UPDATE mytable SET thedate=NOW() + INTERVAL '12 month' WHERE id=1

但是我得到了:

SQLSTATE[22007]: Invalid datetime format: 7 ERROR: invalid input syntax for timestamp: « NOW() + INTERVAL '12 month' »

正确的语法应该是什么?

编辑:它似乎来 self 的 PHP 准备/执行语法

    $t = $connect->prepare('UPDATE mytable 
SET thedate=:duree
WHERE id=:id');

$ok = $t->execute([
':duree' => "NOW() + INTERVAL '$duree month'",
':id' => $user,
]);

最佳答案

这里的问题是您试图将变量与 SQL 表达式绑定(bind),这是不可能的。您只能绑定(bind)文字值。如果您将绑定(bind)替换为您显示的内容,假设 $duree = 12,您将获得如下 SQL:

UPDATE mytable 
SET thedate = 'NOW() + INTERVAL ''12 month'''
WHERE id=:id

这显然是不正确的,因为 'NOW() + INTERVAL ''12 month''' 不是有效的时间戳[tz],因此您现在得到错误。

因为只有月数是您的参数,您可以将它简单地乘以 interval '1 month' 的整数:

$t = $connect->prepare('UPDATE mytable 
SET thedate = now() + (:duree * interval '1 month')
WHERE id=:id');

$ok = $t->execute([
':duree' => $duree,
':id' => $user,
]);

关于php - PostgreSQL 将 X 个月添加到日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39255288/

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