创建视图时如何在 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()