1

Aという名前のテーブルがあります:

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

私がやろうとしているのは、リクエストの時間が と の間にある場合はDATETIME_STARTDATETIME_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に条件や関数などがある場合は、 エイリアス を使用して列名を自分で決定できます。

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 に答える