簡體   English   中英

從表中“本周一的日期”中選擇所有數據

[英]Select All Data from table Where Date is This Monday

我在數據庫中有一個具有輸入日期的日期字段。 字段是starttimestoptime ,它們定義了時間表

對於今天發布,開始時間是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM