Mysql在两个日期之间删除

时间:2013-09-25 09:54:56

标签: php mysql

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

我的代码如下:

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

问题是它删除了$f_date$t_date之间的所有记录,但没有删除$t_date的记录。我想从{{1}删除记录也是。

6 个答案:

答案 0 :(得分:2)

试试这个......

Delete from emp_leave_details 
  Where emp_id='$id' 
   AND from_data > '$f_date' 
   AND from_date <= '$t_date';

答案 1 :(得分:2)

解决方案

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使用<=>=后为您提供预期结果。

答案 2 :(得分:1)

如果您有datetime列,那么使用日期是不够的,因为2013-09-25 12:00:00 更高而不是2013-09-25

你能这样吗

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

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

答案 3 :(得分:0)

我看不出为什么你的查询中也包含了一个id,但直接回答你的问题,你应该

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

答案 4 :(得分:0)

mysql_query("Delete from emp_leave_details Where emp_id='$id' and (from_date BETWEEN '$f_date' AND '$t_date'");

答案 5 :(得分:0)

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

$t_date = $t_date + 1