基于当前时间的MYSQL简单IF语句

基于当前时间的MYSQL简单IF语句,mysql,if-statement,conditional-statements,Mysql,If Statement,Conditional Statements,我想运行SQL语句来返回产品的价格,但如果当前时间在开始/结束日期内,则返回促销价格 | id | price | promo_price | promo_start | promo_end | +-----+---------+---------------+-------------+------------+ | 1 | 5 | 4 | 1375709473 | 1375709473 | SQL仅返回产品价格,不考虑促销: SELEC

我想运行SQL语句来返回产品的价格,但如果当前时间在开始/结束日期内,则返回促销价格

| 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语句

非常感谢。

选择IF(p.`promo\u start`=unix\u timestamp(),p.`promo\u price`,p.`price`)作为价格
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
来自产品p 其中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;
选择
p.`promo\u start`=unix\u timestamp()时的情况
然后p.‘促销价格’
ELSE p.`price`结束
来自产品p
其中p.`id`=1;
在这里。

选择IF(p.`promo\u start`=unix\u timestamp(),p.`promo\u price`,p.`price`)作为价格
来自产品p
其中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;
选择
p.`promo\u start`=unix\u timestamp()时的情况
然后p.‘促销价格’
ELSE p.`price`结束
来自产品p
其中p.`id`=1;

在这里。

很好,现在我理解了语法,但是使用BETWEEN(@vatev solution)似乎更符合逻辑。非常感谢这两者。@BigDistance我还将添加教程链接。你可以从那里学到更多。@BigDistance如果你觉得这个答案是好的,那么别忘了把它标记为已接受。非常感谢。很好,现在我理解了语法,但是使用BETWEEN(@vatev solution)似乎更符合逻辑。非常感谢这两者。@BigDistance我还将添加教程链接。你可以从那里学到更多。@BigDistance如果你觉得这个答案是好的,那么别忘了把它标记为已接受。非常感谢。