[英]Fetch records from specific month and year in php and mysql
我有一個表,其中記錄以這種格式的日期存儲在9/23/2014中。 我已經搜索了很多,但是我得到的所有結果都是時間戳格式的(2013-12-27)。
有人可以幫我嗎,如何檢索特定月份的數據(例如“ 2014年9月”)
非常感謝您的幫助。
Table: events
id course description date start end
1 john test 9/23/2014 1:00pm 3:00pm
2 brad play 12/30/2014 5:00pm 8:00pm
My Code:
SELECT date FROM events WHERE MONTHNAME(date) = 'September' AND YEAR(date) = '2014'
您應該使用BETWEEN-
SELECT *
FROM `events`
WHERE `date` BETWEEN '2013-09-01' AND '2013-09-30';
因為您的日期存儲為varchar
的(您確實應該解決該問題),所以必須將字符串轉換為日期格式,然后進行搜索。 表現會很糟糕-
WHERE STR_TO_DATE(`date`, '%m/%/d/%Y %h:%i:%s %p') BETWEEN STR_TO_DATE('2013-09-01', '%m/%/d/%Y') AND STR_TO_DATE('2013-09-30', '%m/%/d/%Y')
要么
WHERE STR_TO_DATE(LEFT(`date`,LOCATE(' ',`date)),'%m/%d/%Y') BETWEEN '2013-09-01' AND '2013-09-30';
您也可以使用此方法(盡管我更喜歡第一種方法,因為它提供了控制功能)-
SELECT * FROM `table` WHERE YEAR(`date_column`) = 2013 AND MONTH(`date_column`) = 9;
編輯:更新以反映OP的表架構。 在命名列之前,應始終檢查保留字信息。
簡單嘗試一下:
$query = mysqli_query($connect,'SELECT columns FROM tablename WHERE MONTHNAME(datecolumnn) = 'September' AND YEAR(datecolumn) = '2014');
;)
您可以嘗試如下操作:
SELECT * FROM my_table WHERE date_field BETWEEN DATE_FORMAT('%m/%d/%Y','2013-09-01') AND DATE_FORMAT('%m/%d/%Y','2013-09-30')
它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.