如何在创建视图时在mysql中使用ADDDATE函数?

时间:2017-01-20 12:55:00

标签: mysql views

    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 - 字段列表中的未知表'USERS'

1 个答案:

答案 0 :(得分:0)

我会把它写成:

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 status指的是前一行中的表达式。这是不允许的。你必须重复这个表达。
  • 无需重复列别名。当您选择u.id时,列名称将被称为id
  • 不要使用单引号作为列别名。选择不需要转义的名称。如果你必须逃避名称,那就使用反引号。
  • 我不明白为什么时间组件会对" status"感兴趣,所以我将NOW()更改为CURDATE()