2017-01-02 70 views
0

我正在处理包含数据库中包含日期的行的项目。我想回复日期等于或大于今天的字段的数据。我看过其他文章,并尝试了很多不同的方法,但尚未成功。目前,当我执行> =的操作时会返回一个错误,但当我刚刚执行下面的语句时,我会从数据库中获取所有行。从mysql表中选择日期大于或等于今天的记录

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' => DATE_FORMAT(CURDATE(), '%m/%d/%Y') LIKE '%$trimmed%' ORDER BY timeago DESC"; 
+0

'LIKE'%$ trimmed%''应该做什么? – Chris

+0

我通常使用类似'SELECT * FROM table1 WHERE datestored> = \''。日期('Y-m-d H:i:s')。 '';'' –

+0

它返回数据,其中ddest基于查询,该查询被修剪。谢谢 – kylel9506

回答

3

试试这个

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' >= NOW() LIKE '%$trimmed%' ORDER BY timeago DESC"; 

要不然这,

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' >= DATE_FORMAT(CURDATE(), '%m/%d/%Y') LIKE '%$trimmed%' ORDER BY timeago DESC"; 
+0

谢谢,但这不起作用。 Ieave_date的格式为01/01/2017,这就是我认为格式化CURDATE()的原因。 – kylel9506

+0

然后尝试执行此操作'leave_date'> = DATE_FORMAT(CURDATE(),'%​​m /%d /%Y')。我只纠正了你的大于或等于运算符的符号 – funsholaniyi

+0

@FunshoOlaniyi你是对的,但语法错了lil bit..because因为mysql默认日期格式是'Ymd'os'leave_date'> = DATE_FORMAT(CURDATE(),'%​​Y- %m-%d')' –

0

如果你想要等于或大于今天的日期尝试此查询

select * from drives where day(now()) <= day(ddest) and year(ddest) >= year(now()); 
0

有效的查询可能是这个样子:

SELECT * 
    FROM drives 
WHERE ddest = '{$trimmed}' 
    AND leave_date >= CURDATE() 
ORDER 
    BY timeago DESC 

任何剩余的问题更可能与你在处理我们的数据,而随后与查询本身的方式做。

相关问题