猜测/希望这很容易,这是一个mysql新问题。
单个客户端表,包含年,月,日的文本字段(没有时间戳或日期字段ouch)。希望选择日期后的日期。可以很容易地解决方法但是这样做的mysql方法是什么? 无效伪代码
SELECT * FROM `venuedates`
WHERE `year`='2017' AND `month` <> 'January' AND (IF `month`='February' AND day > 24)
所以没有来自Jan,只有在2月的某一天之后。感谢任何信息。
答案 0 :(得分:1)
这样的事情:
php artisan config:cache
这断言
最好将日,月,年信息存储为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
类型。