mysql嵌套选择多个参数

时间:2017-02-25 17:52:20

标签: mysql

猜测/希望这很容易,这是一个mysql新问题。

单个客户端表,包含年,月,日的文本字段(没有时间戳或日期字段ouch)。希望选择日期后的日期。可以很容易地解决方法但是这样做的mysql方法是什么? 无效伪代码

SELECT * FROM `venuedates` 
WHERE `year`='2017' AND `month` <> 'January' AND (IF `month`='February' AND day > 24)

所以没有来自Jan,只有在2月的某一天之后。感谢任何信息。

4 个答案:

答案 0 :(得分:1)

这样的事情:

php artisan config:cache

这断言

  • 年是2017年
  • 月份不得为1月
  • 如果月份是2月,则日期应大于24
  • 如果不是二月,任何一天

最好将日,月,年信息存储为DATE数据类型的单个列。

如果它是一个日期列,那将是微不足道的:

select *
from `venuedates`
where `year` = '2017'
    and `month` <> 'January'
    and (
        `month` <> 'February'
        or (
            `month` = 'February'
            and day > 24
            )
        )

答案 1 :(得分:1)

试试这个

SELECT * FROM `venuedates` 
WHERE `year`='2017' AND `month` <> 'January' AND (`month`<>'February' OR day > 24)

答案 2 :(得分:0)

您可以使用OR运算符,例如:

SELECT * FROM `venuedates` 
WHERE `year`='2017' 
AND (`month` <> 'February' OR (`month`='February' AND day > 24)) 
AND `month` <> 'January'

答案 3 :(得分:-1)

您可以合并STR_TO_DATE()CONCAT_WS()来构建有效日期。然后你可以使用简单的比较。

SELECT * 
FROM `venuedates` 
WHERE STR_TO_DATE(CONCAT_WS(' ', `year`, `month`, `day`), '%Y %M %d') > '2017-02-24'

但您最好将日期存储为DATE类型。