[英]Select All Data from table Where Date is This Monday
我在數據庫中有一個具有輸入日期的日期字段。 字段是starttime
和stoptime
,它們定義了時間表
對於今天發布,開始時間是2018-12-17 00:00:00
,停止時間是2018-12-17 11:59:59
示例開始時間:
2018-12-17 15:30:00,
2018-12-24 06:00:00,
2018-12-17 10:00:00,
2018-12-17 09:00:00
和停止時間(順序相同)
2018-12-17 16:00:00,
2018-12-24 07:00:00,
2018-12-17 12:30:00,
2018-12-17 10:30:00
它只會顯示2018-12-17 09:00:00/2018-12-17 10:30:00
或除上述1之外的所有其他內容(如果我切換操作)在if語句中登錄。
$starttime = date("Y-m-d H:i:s", strtotime('last monday', strtotime('next sunday')));
$stoptime = strtotime(date("Y-m-d H:i:s", strtotime($starttime))) + 43199;
$stoptime = date("Y-m-d H:i:s", $stoptime);
$stmt2 = $db->prepare("SELECT * FROM schedule WHERE day = :day");
$stmt2->execute(array(':day' => "Monday"));
while($row2 = $stmt2->fetch()){
if($row2['starttime'] >= $starttime AND $row2['stoptime'] <= $stoptime){
//data gets displayed here.
}
}
您似乎誤解了日期/時間。 從43199的供應量來看,這是不到1秒的時間,然后是12小時,而不是一天24小時。 因此,您得到的是那些在中午12點之前而不是早晨12點之前的條目。 在24小時制下,您將在86,400下保持24小時……或在86,399下少1秒。
此外,您可以更新查詢以僅關心開始時間,只要在相關開始日期內就可以。 如果結束時間碰巧到下一個日期,那么我肯定您也希望在結果集中顯示該時間。
SELECT *
FROM schedule
WHERE startTime >= '2018-12-17'
and starttime < date_add( '2018-12-17', interval 7 days)
現在,在上述示例中,我的工作量不到7天。 因此,讓我們看一下。“ 2017-12-17”的開始日期/時間隱含在以下時間:午夜00:00:00。 通過少於7天的時間,它可以覆蓋下周日晚上11:59:59(或24小時制23:59:59)的整個一周。 因此,在下周的星期一之前將是LESS。 然后,您不必擔心在查詢中格式化特定的字符串然后進行測試。 只要獲得結果就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.