2

我想运行一条 SQL 语句来返回产品的价格,但如果 current_time 在开始/结束日期内,则返回促销价格。

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

SQL 返回 JUST 产品价格,无论促销如何:

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

我如何将其创建为 SQL-IF 语句?

非常感谢。

4

2 回答 2

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 
于 2013-08-05T13:40:32.530 回答
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

使用上面的查询。

或者您可以使用案例:

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;

教程在这里。

于 2013-08-05T13:38:19.480 回答