我有一个约会表,我想向用户显示他所做的所有约会高于当前日期,这样他就可以取消它们......我有这个查询......
$result = mysql_query("SELECT id,date,start,end FROM jos_jxtc_appbook_appointments WHERE userident='$idusera' AND CONCAT(date,' ',start)>NOW()");
while($row = mysql_fetch_assoc($result))
{
echo '<div class="record" id="record-',$row['id'],'">
<a href="?delete=',$row['id'],'" class="delete">Delete</a>
<strong>',$row['date'], $row['start'], $row['end'],'</strong>
</div>';
}
并且这仍然显示低于当前的日期...它可能是时区错误还是类似的东西?
这是我的桌子......
date duration start end
2013-02-28 01:00:00 12:00:00 13:00:00
2013-02-28 01:00:00 03:00:00 04:00:00
2013-02-27 01:00:00 21:00:00 22:00:00
2013-02-27 01:00:00 20:00:00 21:00:00
2013-02-28 01:00:00 20:00:00 21:00:00
2013-02-28 01:00:00 01:00:00 02:00:00
2013-02-28 01:00:00 09:00:00 10:00:00
2013-02-28 01:00:00 02:00:00 03:00:00
2013-03-01 01:00:00 00:00:00 01:00:00
2013-02-28 01:00:00 21:00:00 22:00:00
2013-02-28 01:00:00 22:00:00 23:00:00
2013-03-01 01:00:00 02:00:00 03:00:00
我从回声中得到了这个......
Delete 2013-02-28 12:00:00 13:00:00
Delete 2013-02-28 20:00:00 21:00:00
Delete 2013-03-01 00:00:00 01:00:00
Delete 2013-02-28 21:00:00 22:00:00
Delete 2013-02-28 22:00:00 23:00:00
Delete 2013-03-01 02:00:00 03:00:00
所以如果现在的时间是2013-02-28 15:25:00,那么它应该显示更低的日期--2013-02-28 12:00:00 13:00:00。
答案 0 :(得分:0)
我认为date
属于Date
类型,start
和end
类似于Char
类型列。
您应该为DateTime
和start
列使用end
类型,这样您就不需要进行任何连接。
现在你可以start > NOW()
。
答案 1 :(得分:0)
您需要STR_TO_DATE()函数将字符串转换为有效的日期值。
$result = mysql_query("SELECT id,date,start,end FROM jos_jxtc_appbook_appointments WHERE userident='$idusera' AND STR_TO_DATE(CONCAT(date,' ',start))>NOW()");