[英]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.