【问题标题】:MYSQL Simple IF statement based on CURRENT_TIME基于 CURRENT_TIME 的 MYSQL 简单 IF 语句
【发布时间】:2013-08-06 05:45:19
【问题描述】:

我想运行一条 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 语句?

非常感谢。

【问题讨论】:

    标签: mysql if-statement conditional-statements


    【解决方案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 在这里。

    【讨论】:

    • 太好了,现在我理解了语法,但是使用 BETWEEN(@vatev 解决方案)似乎更合乎逻辑。非常感谢他们。
    • @BigDistance 我还要添加教程链接。您可以从那里了解更多信息。
    • @BigDistance 如果您觉得这个答案很好,请不要忘记将其标记为已接受。非常感谢。
    【解决方案2】:
    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 2019-03-17
      • 2022-01-26
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多