gpt4 book ai didi

MySQL(或 Mariadb)带有 DATEDIFF 和 DATETIME() OR NOW() 的表达式

转载 作者:行者123 更新时间:2023-11-29 15:22:54 25 4
gpt4 key购买 nike

这里出了什么问题?

CREATE TABLE `actionAngebot` (
`createdAt` DATETIME NOT NULL,
`expiryDat` SMALLINT DEFAULT UNSIGNED AS (DATEDIFF(`createdAt`, DATETIME())) STORED
)
ENGINE=MyISAM;

SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() )) STORED ) ENGINE=MyISAM' at line 3 *

请不要向我推荐这个:

CREATE TABLE `promos` (
`createdAt` DATETIME NOT NULL,
`createdTil` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expiryDateOfReward` SMALLINT(10) AS ((to_days(`createdAt`) - to_days(`createdTil`))) VIRTUAL
)
ENGINE=MyISAM;

我想用 2 列来制作它。

最佳答案

当前查询的问题是 DATETIME 是一种数据类型,而不是函数,因此您不能将其作为一个函数来调用。 DATETIME 在该位置也无效,您需要使用 NOW()CURDATE() 取决于您是否想要差异日期和时间或仅日期。

但是

您不能对包含基于系统日期和时间的函数的生成列使用表达式,因此您无法执行您想要的操作(请参阅 manual )。您可以考虑创建一个 View :

CREATE VIEW aabot AS
SELECT *, DATEDIFF(`createdAt`, NOW()) AS expiryDat
FROM actionAngebot

关于MySQL(或 Mariadb)带有 DATEDIFF 和 DATETIME() OR NOW() 的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59257707/

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