我有以下查詢從我的表中返回所有行:從MySQL返回行不到60天
$query="SELECT * FROM $tbl_name ORDER BY job_id DESC";
我想用條目少於60天,以限制那些結果。我使用以下數據記錄了數據庫中的日期:
$dt=date('d M Y');
並且它存儲在名爲'date'的列中。
有人可以幫我修改我的查詢嗎?
感謝 丹
我有以下查詢從我的表中返回所有行:從MySQL返回行不到60天
$query="SELECT * FROM $tbl_name ORDER BY job_id DESC";
我想用條目少於60天,以限制那些結果。我使用以下數據記錄了數據庫中的日期:
$dt=date('d M Y');
並且它存儲在名爲'date'的列中。
有人可以幫我修改我的查詢嗎?
感謝 丹
$query="SELECT * FROM $tbl_name WHERE DATEDIFF(CURDATE(), STR_TO_DATE(date,'%d %M %Y')) <60 ORDER BY job_id DESC"
謝謝,但可悲的是,這不是'不工作。它不會返回錯誤,但它不會過濾結果。難道是因爲當CURDATE是YYYY MM DD格式時,我以'd M Y'格式存儲數據? – Dan
你是否將日期存儲在日期字段或varchar中? –
我最後的編輯應該工作,只要你把你的日期作爲一個字符串存儲在數據庫中(在varchar或文本字段中) –
試試這個(未經測試)
SELECT * FROM $tbl_name WHERE date >= DATE_SUB(CURDATE(), INTERVAL 60 DAY) ORDER BY job_id DESC
謝謝但如上所述,可悲的是,這不是加工。它不會返回錯誤,但它不會過濾結果。難道是因爲當CURDATE是YYYY MM DD格式時,我以'd M Y'格式存儲數據? – Dan
如果日期存儲像數據庫中的VARCHAR,您的查詢應該是:
SELECT *
FROM $tbl_name
WHERE TO_DATE(date, 'dd MON yyyy') >= DATE_SUB(CURDATE(), INTERVAL 60 DAY)
ORDER BY job_id DESC
如果日期像日期一樣存儲,使用:
SELECT *
FROM $tbl_name
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 60 DAY)
ORDER BY job_id DESC
SELECT * FROM $tbl_name FROM_UNIXTIME(date) >= DATE_SUB(CURDATE(), INTERVAL 60 DAY) ORDER BY job_id DESC
您可以使用作爲
select b.mobile_number, max(b.bill_number), max(b.created_on), c.name from MasterBill as b, MasterCustomer as c WHERE b.created_on < NOW() - INTERVAL 60 DAY and b.mobile_number = c.mobile_number group by mobile_number;
認爲手機號碼是客戶主和計費鍵綁定數據。
http://dev.mysql.com/doc/refman/5.1/zh/date-and-time-functions.html – hakre
@hakre感謝您的鏈接和編輯:) – Dan