簡體   English   中英

在php和mysql中從特定月份和年份獲取記錄

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

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