我需要能够创建两个时间点:
我开始了,但它没有产生我需要的东西:
$starting_time = new DateTime('today');
$starting_time->modify('-7 day -1 second');
$ending_time = new DateTime('today');
$ending_time->modify('-8 day -1 second');
我需要它们都是完全格式化的时间戳: 2015:07:14 15:51:12
最终目标是能够执行SQL查询以检查24小时内的日期,如下所示:
whereBetween('mytable.expiry_date', array($starting_time, $ending_time))
答案 0 :(得分:0)
试试这个
$start = new DateTime();
$start->setTime(0,0,1);
$end = clone $start; // or just make new DateTime;
$end->modify( '-7 day' );
$start->setTime(23,59,59);
但正如其他人在查询数据库时所指出的那样,你应该只使用DATE()函数,它更简单,更健壮,更容易阅读和理解代码的意图。
答案 1 :(得分:0)
根据评论请求:
考虑如果你在日常变换中运行两个new Date()
会发生什么:
11:59:59pm -> new Date('today') -> $start = Jul 20, 2015 11:59:59pm
12:00:02am -> new Date('today') -> $end = Jul 21, 2015 12:00:02am
$start -> -7 days -1 second -> Jul 13, 2015 11:59:58pm
$end -> -8 days -1 second -> Jul 13, 2015 12:00:01am
"糟糕"
有点人为的例子,但从来没有假设今天'将在计划中保持不变。答案 2 :(得分:0)
您可以在7天前获取日期,并将00:00:00和23:59:59追加到它。
喜欢
$ start_time = $ date_7days_ago。 " 00:00:00&#34 ;; $ end_time = $ date_7days_ago。" 23:59:59";
这对您正在查看的查询完全正常。