2013-08-05 36 views
2

我想運行一條SQL語句來返回產品的價格,但是如果current_time在開始/結束日期之內,則返回促銷價格。MYSQL基於CURRENT_TIME的簡單IF語句

| id | price | promo_price | promo_start | promo_end | 
+-----+---------+---------------+-------------+------------+ 
| 1 | 5  |  4  | 1375709473 | 1375709473 | 

SQL返回不僅僅是產品的價格,無論宣傳片:

SELECT p.`price` 
FROM products p 
WHERE p.`id` = 1 

我將如何創建爲SQL-IF語句?

非常感謝。

回答

3
SELECT 
    IF(unix_timestamp() BETWEEN p.promo_start AND p.promo_end, p.promo_price, p.price) as real_price 
FROM products p 
WHERE p.id = 1 
1
SELECT IF(p.`promo_start` <= unix_timestamp() AND p.`promo_end` >= unix_timestamp(), p.`promo_price`,p.`price`) as price 
FROM products p 
WHERE p.`id` = 1 

使用上述查詢。

或者您也可以使用CASE:

SELECT 
    CASE WHEN p.`promo_start` <= unix_timestamp() AND p.`promo_end` >= unix_timestamp() 
     THEN p.`promo_price` 
     ELSE p.`price` END 
    FROM products p 
     WHERE p.`id` = 1; 

Tutorials在這裏。

+0

好,現在我明白了語法,但是使用BETWEEN(@vatev解決方案)似乎更合乎邏輯。非常感謝這兩個。 – BigDistance

+1

@BigDistance我也要添加教程鏈接。你可以從那裏瞭解更多。 –

+0

@BigDistance如果你覺得這個答案很好,那麼不要忘記將其標記爲已接受。非常感謝。 –