0

我想删除两个日期之间的详细信息

我的代码如下

Delete from emp_leave_details 
where emp_id='$id' 
and from_date BETWEEN '$f_date' AND '$t_date'

问题是它删除了所有记录$f_date$t_date但没有删除记录。$t_date我也想删除记录$t_date

4

6 回答 6

4

解决方案

Delete from emp_leave_details 
where emp_id='$id' 
and DATE(from_date) BETWEEN DATE('$f_date') AND DATE('$t_date')

解释

您的查询等于from_date >= '$f_date' AND from_date <= '$t_date',这意味着它将忽略最后一天的所有内容('2013-09-05' < '2013-09-05 00:00:01')。我的上面给出了('2013-09-05' <= '2013-09-05')

DATE()简单地去掉小时、分钟和秒的值,并给你预期的结果,因为BETWEEN使用<=>=

于 2013-09-25T10:04:47.370 回答
2

尝试这个...

Delete from emp_leave_details 
  Where emp_id='$id' 
   AND from_data > '$f_date' 
   AND from_date <= '$t_date';
于 2013-09-25T09:58:01.850 回答
1

当您有一列时,使用日期是datetime不够的,因为大于2013-09-25 12:00:002013-09-25

你可以你这个

Delete from emp_leave_details 
Where emp_id = '$id' 
and from_date >= '$f_date' 
and from_date < '$t_date'

并设置'$t_date'为 1 天后。

于 2013-09-25T09:57:36.243 回答
0

问题是对于 $t_date,它从 00:00:00 开始。那是一天的开始。不包括白天的一切。如果要包含 $t_date 的记录,则应将其加 1

$t_date = $t_date + 1
于 2013-09-25T10:07:10.410 回答
0
mysql_query("Delete from emp_leave_details Where emp_id='$id' and (from_date BETWEEN '$f_date' AND '$t_date'");
于 2013-09-25T09:58:32.847 回答
0

我看不出您为什么还要在查询中包含一个 id,但直接回答您的问题,您应该

Delete from emp_leave_details
  Where emp_id='$id'
  and from_date > '$f_date'
  and from_date <= '$t_date'
于 2013-09-25T09:57:51.323 回答