将存储的日期值与计算机的当前日期进行比较

时间:2014-05-13 05:28:54

标签: php mysql

我无可救药地坚持这个过程并尝试了我所知道的每一种方法来获得我想要的结果。 (我是PHP和MySQL的新手,这是关于同一项目的第三个查询)

我真正希望更新现有行中仅包含相同日期的特定字段。

我有一个名为 time_logs 的表格,其中包含字段和记录:

user_ID |用户名| date_added | Time_In | TIME_OUT
1 USER1 2014年5月13日 1:15 1:30
2 用户2 2014年5月13日 1:15 1:30

Time_In和Time_Out运作良好。

user_ID |用户名| date_added | Time_In | TIME_OUT
1 USER1 2014年5月13日 1:15 1:45
1 USER1 2014年5月14日的 1:30 0:00

除非他们点击了“超时”按钮,否则Time_Out字段将没有任何记录。问题是,无论日期如何,同一用户的Time_Out记录也会被更改:

user_ID |用户名| date_added | Time_In | TIME_OUT
1 USER1 2014年5月13日 1:15 2:00(应该仍然是1:30,不同的日期)
1 USER1 2014年5月14日的 1:30 2:00

我希望完成的是将date_added上的记录与服务器的当前日期进行比较。这样的事情:
if(record_of_date_in_the_database = = current_date)
记录不会被存储
否则
继续插入新的Time_Out值

这可能吗?希望有人能教我如何实现这一目标。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您想要运行如下所示的查询:

UPDATE time_logs 
SET time_out = CURTIME() 
WHERE user_id = $user_id 
    AND date_added = CURDATE()

注意:

$user_id是用户的ID。

CURTIME()获取当前时间,例如:' 23:50:26'。

CURDATE()获取当前日期,例如:' 2014-05-12'

如果您愿意,也可以简单地使用PHP变量代替CURTIME()CURDATE()。只需在运行查询之前创建它们,并使用它们代替MySQL日期/时间函数。

示例:

$current_time = date("H:i");
$current_date = date("Y-m-d");

有关格式设置的详细信息,请阅读date()上的文档。