簡體   English   中英

嘗試查找兩個日期之間的記錄

[英]Trying to find a record between two dates

我的查詢看起來像這樣

WHERE `Project`.`user_id` = 9 
  AND `Project`.`project_status` = 1 
  AND `Project`.`project_type_id` = 4
  AND `Project`.`approval_date` >= '01/08/2012' 
  AND `Project`.`approval_date` <= '01/12/2012'

我確實有一條符合該條件的記錄,我實際上是根據其中一條記錄創建查詢的,但它不會返回。 我真的不想使用BETWEEN因為應用程序可以使用開始日期或結束日期

您應該使用STR_TO_DATE()將'01 / 08/2012 '和'01 / 12/2012 '轉換為MySQL日期/時間值

例如

STR_TO_DATE('01/08/2012', '%d/%m/%Y')

好吧,這實際上只是查詢的一部分-任何“之間”的工作方式都與您所暗示的不同-這是MySQL手冊的摘錄:

•expr BETWEEN min and max如果expr大於或等於min且expr小於或等於max,則BETWEEN返回1,否則返回0。這等效於表達式(min <= expr AND expr <= max ),如果所有參數都屬於同一類型。 否則,類型轉換將根據第11.2節“表達式評估中的類型轉換”中所述的規則進行,但會應用於所有三個參數。

除了這些,“ approval_date”列的數據類型是什么?

乍一看似乎應該可以使用,但是您提供的值不是有效的datetimes 試試這個

WHERE `Project`.`user_id` = 9 
AND `Project`.`project_status` = 1 
AND `Project`.`project_type_id` = 4
AND `Project`.`approval_date` >= '2012-01-08 00:00:00' 
AND `Project`.`approval_date` <= '2012-01-12 00:00:00'

您仍然可以使用BETWEEN

WHERE `Project`.`user_id` = 9 
AND `Project`.`project_status` = 1 
AND `Project`.`project_type_id` = 4
AND (`Project`.`approval_date` BETWEEN '2012-01-08 00:00:00' AND '2012-01-12 23:59:59')

我的主要問題是將字符串格式化為日期時間。 kissmyface在正確構造它上是正確的,因此mysql可以理解。 所以我用php將其轉換后再發送出去。

"Project.approval_date >= '".date("Y-m-d H:i:s", strtotime($start))."'";
"Project.approval_date <= '".date("Y-m-d H:i:s",strtotime($end))."'";

這幾乎是我的解決方案。 除非有人知道在mysql方面做完全相同的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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