【问题标题】:How to update timestamp如何更新时间戳
【发布时间】:2019-08-08 03:48:32
【问题描述】:

我现在在使用 dateadd() 函数时遇到了问题。基本上我想在 cexpireday(timestamp) 中添加 1 天,如果它在当天之后至少 10 天。

我尝试了两种方法,但都不起作用

update card

set cexpireday = dateadd(day,1,cexpireday)

where cexpireday - current_timestamp() >= '0000-00-10 00:00:00'

update card

set cexpireday = date_add(cexpireday,INTERVAL 10 day )

where datediff(day,cexpireday,current_timestamp) >= 10

第一个是“dateadd 不存在”,第二个是“导航函数 datediff() 的参数不正确”。

谁能帮我解决这个问题?

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    不妨试试这个:

    UPDATE card
    SET cexpireday = DATE_ADD(cexpireday, INTERVAL 1 DAY)
    WHERE cexpireday > DATE_ADD(NOW(), INTERVAL 10 DAY)   
    

    【讨论】:

    • 请解释为什么 OP 应该尝试这个 - 初始查询中有什么问题?你做了什么改变,为什么?
    • 为什么我不能只比较 cexpireday 和 current_timestamp()?
    • @mj3475 在这里您可以找到类似问题的详细解释,但在 sql-server 中,在 where 子句中使用了 DATEDIFF() 函数:stackoverflow.com/questions/5266643/…
    【解决方案2】:

    您需要使用DATE_ADD 而不是dateadd。 您还需要查看文档。 这是如何使用它的示例 DATE_ADD(date, INTERVAL 10 DAY)。 DATEDIFF 还需要 2 个参数 start_date 和 end_date 并返回 2 个日期之间的天数。

    【讨论】:

    • 我得到“截断不正确的双精度值'0000-00-00 00:00:00'”更新卡集 cexpireday = date_add(cexpireday,INTERVAL 10 day) where cexpireday - current_timestamp() >= ' 0000-00-10 00:00:00'
    • 在您的情况下,您需要将 2 个参数传递给 datediff start_date 和 end_date datediff(cexpireday, current_timestamp())
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 2016-12-07
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多