mysql - 带有 DATEDIFF 和 DATETIME() 或 NOW() 的 MySQL(或 Mariadb)表达式
问题描述
这里有什么问题?
CREATE TABLE `actionAngebot` (
`createdAt` DATETIME NOT NULL,
`expiryDat` SMALLINT DEFAULT UNSIGNED AS (DATEDIFF(`createdAt`, DATETIME())) STORED
)
ENGINE=MyISAM;
SQL 错误 (1064):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '() )) STORED ) ENGINE=MyISAM' 附近使用正确的语法 *
请不要向我提出这个:
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()
依赖于您是否想要日期和时间的差异或只是日期。
但
您不能对包含基于系统日期和时间的函数的生成列使用表达式,因此您无法做您想做的事情(请参阅手册)。您可以考虑创建一个视图:
CREATE VIEW aabot AS
SELECT *, DATEDIFF(`createdAt`, NOW()) AS expiryDat
FROM actionAngebot
推荐阅读
- microsoft-teams - 使用 HttpPOST 操作发送 MessageCard 源 JSON
- mocha.js - 如何在使用赛普拉斯发起一个/w 请求后立即检查过渡元素(例如微调器)?
- python - 正则表达式搜索行尾和下一行的开头
- mysql - MySQL 使用 where & 和条件过滤结果
- typescript - 使用自定义(分叉)@types 模块
- image - react-native中如何保存和显示和图像?
- cognos - COGNOS 报告:计数 IF
- python - 在 python 中使用 tcl lib 时无法连接以显示错误
- rust - 如何将 &str 生命周期传递给 Box
- android - 如何在android studio中更改默认参数的覆盖方法名称?