繁体   English   中英

10天前的SQL SELECT日期失败

[英]SQL SELECT date from 10 days ago failed

我在使用SQL时遇到了一些麻烦:

首先,我使用PHP-time()插入当前日期:

mysql_query("
   INSERT INTO applicants (
      date_last_applied
   )
   VALUES (
      " . time() . "
   )
");

这样很好。 但是,我只想在10天前插入^时执行操作:

$result = mysql_query("
   SELECT * FROM applicants WHERE date_last_applied < DATE_SUB(NOW(), INTERVAL 10 DAY)
");
while ($row = mysql_fetch_array($result)) 
    echo $row['id_member'];

尽管它应该可以工作(IMO),但不能。 d:

对于可能的解决方案:不能选择使用其他时间格式,因为我在整个网站上都使用这种格式。

我认为将date_sub resutl转换为unixtime将解决您的问题。

date_last_applied < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 DAY))

在插入行时,您正在使用本地计算机的时间(time())。 但是,在检索行时,您正在使用mysql服务器的时间(NOW())。 您确定它们完全匹配,并且会继续匹配。 您应该尝试在所有地方使用mysql服务器时间。

另外,您正在申请人中插入行并从DDFS_applicants中检索。 可能就是这里的问题

由于您使用的是时间戳记,而且我猜您没有使用数据时间字段,因此转换应该可以解决您的问题。 但是有一个但是!

UNIX_TIMESTAMP始终处于GMT中,因此可能是您的PHP time()与UNIX_TIMESTAMP不同。 如果您发现其相同,那么您应该很好!

date_last_applied < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 DAY))

好的,谢谢您的帮助。 这段代码可以完美地工作:

 //get member's info
$result = mysql_query("
   SELECT * FROM DDFS_applicants 
   WHERE FROM_UNIXTIME(date_last_applied, '%Y %D %M') = FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)), '%Y %D %M')
");
while ($row = mysql_fetch_array($result)) {
    echo $row['id_member'];

(因此,它甚至可以检查日期是否完全相同。如果需要,甚至可以增加几个小时,但我选择不这样做。)

资料来源: http : //dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM