如何在MySQL函数中编写INTERVAL MINUTES和CURRENT TIMESTAMP?

时间:2017-11-28 15:32:46

标签: mysql sql database function

我正在努力将DB2迁移到MySQL查询。我有以下查询转换为MySQL。

DB2 Query:

CREATE FUNCTION SAMPLE_TEST
  (
    IN CONNECTED TIMESTAMP,
    IN DISCONNECTED TIMESTAMP,
    IN INTERVAL BIGINT
  ) RETURNS INTEGER
  DETERMINISTIC
  NO EXTERNAL ACTION
  CONTAINS SQL
  CALLED ON NULL INPUT
  BEGIN ATOMIC
    IF (CONNECTED IS NULL) THEN
        RETURN -1;
    ELSEIF (DISCONNECTED IS NULL) THEN
        RETURN CASE WHEN (INTERVAL = 0 OR CONNECTED + INTERVAL MINUTES > CURRENT TIMESTAMP) THEN 1 ELSE 0 END;
    ELSE
        RETURN CASE WHEN (INTERVAL = 0 OR CONNECTED + INTERVAL MINUTES > CURRENT TIMESTAMP) AND CONNECTED > DISCONNECTED THEN 1 ELSE 0 END;
    END IF;
  END#

我试图将以下查询转换为MySQL,我在MySQL中将INTERVAL视为错误。这是最终转换后的查询。

MySQL查询:

CREATE FUNCTION SAMPLE_TEST
  (
    CONNECTED TIMESTAMP,
    DISCONNECTED TIMESTAMP,
    INTERVAL BIGINT
  ) RETURNS INTEGER
  BEGIN
    IF (CONNECTED IS NULL) THEN
        RETURN -1;
    ELSEIF (DISCONNECTED IS NULL) THEN
        RETURN CASE WHEN (INTERVAL = 0 OR CONNECTED + INTERVAL MINUTES > CURRENT TIMESTAMP) THEN 1 ELSE 0 END;
    ELSE
        RETURN CASE WHEN (INTERVAL = 0 OR CONNECTED + INTERVAL MINUTES > CURRENT TIMESTAMP) AND CONNECTED > DISCONNECTED THEN 1 ELSE 0 END;
    END IF;
  END;

我在INTERVAL BIGINT

收到错误
RETURN CASE WHEN (INTERVAL = 0 OR CONNECTED + INTERVAL MINUTES > CURRENT TIMESTAMP) THEN 1 ELSE 0 END;

我应该在MysQL中将CURRENT TIMESTAMP写入CURRENT_TIMESTAMP吗?有什么帮助解决这个问题?有文件吗?

0 个答案:

没有答案