我有一张名为A的表:
DATETIME_START || DATETIME_END || VALUE
---------------------------------------
2012-07-23 || 2013-07-23 || coffee
2011-13-11 || 2013-01-09 || airport
我要做的就是 - 如果请求时间介于DATETIME_START
和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中)
为什么?
答案 0 :(得分:2)
SELECT VALUE FROM A
WHERE NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END
答案 1 :(得分:2)
你在找这个:
SELECT
CASE
WHEN NOW() BETWEEN A.DATETIME_START AND A.DATETIME_END THEN VALUE
ELSE NULL
END
FROM A
答案 2 :(得分: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`