1

我有一个名为 A 的表:

DATETIME_START || DATETIME_END || VALUE 
 --------------------------------------- 
2012-07-23     || 2013-07-23   ||  coffee  
2011-13-11     || 2013-01-09   ||  airport

我要做的就是 - 如果请求的时间在DATETIME_STARTand之间DATETIME_END,只需返回VALUE

我试过:

SELECT 
IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, VALUE,NULL)
FROM A

但发生的事情是我得到了"IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, VALUE,NULL)"结果中的字符串!

(我不想把条件放在 WHERE 中)

这是为什么?

4

3 回答 3

2
SELECT VALUE FROM A
WHERE NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END
于 2012-09-20T16:24:49.707 回答
2

您是否正在寻找这个:

SELECT
    CASE 
        WHEN NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END THEN VALUE
        ELSE NULL
    END
FROM A
于 2012-09-20T16:25:31.637 回答
2

列名将是您实际选择的任何内容。假设您的选择看起来像这样:

SELECT
    IF (NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END, ColumnA, ColumnB)

当您可能从 2 列中获取结果时,结果集列名称应该是什么?

您甚至可能没有从任何列中进行选择:

SELECT
    IF(0 < 1, 'True', 'False')

在您的特定情况下,您实际上并不需要 IF 语句,但是当您的 SELECT 中确实有条件或函数时,您可以使用 Alias 自己确定列名。

SELECT
    IF(0 < 1, 'True', 'False') AS YourName
  # or
    IF(0 < 1, 'True', 'False') AS `Your name with spaces`
于 2012-09-20T17:26:19.310 回答