创建视图时如何在 mysql 中使用 ADDDATE 函数?
How to use ADDDATE function in mysql while creating a view?
CREATE VIEW USER_VIEW AS
(
SELECT USERS.ID ID,
USERS.EMAIL EMAIL,
USERS.PASSWORD PASSWORD,
ADDDATE(USERS.START_DATE, INTERVAL USERS.DURATION MONTH) "EXPIRY_DATE",
DATEDIFF(EXPIRY_DATE, NOW()) "STATUS");
Mysql 正在生成此错误消息:
1109 - 未知 table 'USERS' 在字段列表
中
我会这样写:
CREATE VIEW USER_VIEW AS
SELECT u.ID, u.EMAIL, u.PASSWORD,
DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH) as EXPIRY_DATE,
DATEDIFF(DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH), CURDATE()) as status
FROM users u;
备注:
- 您需要一个
FROM
子句。那是你查询中的大错误。
- 据推测,
EXPIRY_DATE
for status
指的是前一行的表达式。这是不允许的。你必须重复表达。
- 无需重复列别名。当您选择
u.id
时,列名称称为 id
。
- 不要对列别名使用单引号。选择不需要转义的名称。如果您确实必须转义名称,请使用反引号。
- 我不明白为什么 "status" 的时间分量会很有趣,所以我将
NOW()
更改为 CURDATE()
。
CREATE VIEW USER_VIEW AS
(
SELECT USERS.ID ID,
USERS.EMAIL EMAIL,
USERS.PASSWORD PASSWORD,
ADDDATE(USERS.START_DATE, INTERVAL USERS.DURATION MONTH) "EXPIRY_DATE",
DATEDIFF(EXPIRY_DATE, NOW()) "STATUS");
Mysql 正在生成此错误消息:
1109 - 未知 table 'USERS' 在字段列表
中我会这样写:
CREATE VIEW USER_VIEW AS
SELECT u.ID, u.EMAIL, u.PASSWORD,
DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH) as EXPIRY_DATE,
DATEDIFF(DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH), CURDATE()) as status
FROM users u;
备注:
- 您需要一个
FROM
子句。那是你查询中的大错误。 - 据推测,
EXPIRY_DATE
forstatus
指的是前一行的表达式。这是不允许的。你必须重复表达。 - 无需重复列别名。当您选择
u.id
时,列名称称为id
。 - 不要对列别名使用单引号。选择不需要转义的名称。如果您确实必须转义名称,请使用反引号。
- 我不明白为什么 "status" 的时间分量会很有趣,所以我将
NOW()
更改为CURDATE()
。