簡體   English   中英

我如何從mysql中獲取月份

[英]how do I get month from date in mysql

我希望能夠使用如下語句從mysql獲取結果:

SELECT * 
  FROM table 
 WHERE amount > 1000 

但是我想把結果限制在一個月和一年(根據用戶的輸入)......我試着這樣:

SELECT * 
  FROM table 
 WHERE amount > 1000 
   AND dateStart = MONTH('$m')   

...... $m是一個月,但它給出了錯誤。

在該表中,它實際上有兩個日期: startDateendDate但我專注於startDate 輸入值為月份和年份。 如何根據當年的那個月來說明獲得結果的SQL語句?

你很接近 - 向后得到比較(假設startDate是DATETIME或TIMESTAMP數據類型):

SELECT * 
  FROM table 
 WHERE amount > 1000 
   AND MONTH(dateStart) = {$m}

注意事項:


備擇方案:


因為在列上使用函數不能使用索引,所以更好的方法是使用BETWEENSTR_TO_DATE函數:

WHERE startdate BETWEEN STR_TO_DATE([start_date], [format]) 
                    AND STR_TO_DATE([end_date], [format])

有關格式化語法,請參閱文檔。

參考:


使用month()函數。

select month(now());

例如

$date = sprintf("'%04d-%02d-01'", $year, $month);
$query = "
  SELECT
    x,y,dateStart
  FROM
    tablename
  WHERE
    AND amount > 1000
    AND dateStart >= $date
    AND dateStart < $date+Interval 1 month
";
mysql_query($query, ...

這將創建一個查詢,例如

WHERE
  AND amount > 1000
  AND dateStart >= '2010-01-01'
  AND dateStart < '2010-01-01'+Interval 1 month

+ Interval 1 monthdate_add()的替代方案。

SELECT Date('2010-01-01'+Interval 1 month) - > 2010-02-01
SELECT Date('2010-12-01'+Interval 1 month) - > 2011-01-01
這樣您就可以獲得下個月的第一天。 您想要的記錄必須在該日期之前有一個dateStart,但是等於您傳遞給sprintf()的月份(和年份)的第一天之后。
'2010-01-01'+Interval 1 month不會在行之間發生變化。 MySQL將只計算一次該術語,並可以利用索引進行搜索。

嘗試這個:

SELECT * 
FROM table 
WHERE amount > 1000 AND MONTH(dateStart) = MONTH('$m') AND YEAR(dateStart) = YEAR('$m')

嘗試這個

SELECT * 
      FROM table 
     WHERE amount > 1000 
       AND MONTH(datestart)
    GROUP BY EXTRACT(YEAR_MONTH FROM datestart)

如果(日期字段是文本然后將此字符串轉換為日期),請嘗試此操作:

SELECT * FROM `table_name` WHERE MONTH(STR_TO_DATE(date,'%d/%m/%Y'))='11'

//This will give month number MONTH(STR_TO_DATE(date,'%d/%m/%Y'))
//If its return 11 then its November
// Change date format with your date string format  %d/%m/%Y

適用於:MySQL 5.7,MySQL 5.6,MySQL 5.5,MySQL 5.1,MySQL 5.0,MySQL 4.1,MySQL 4.0,MySQL 3.23

  • 天:

     SELECT EXTRACT(DAY FROM "2017-06-15"); 
  • 月:

     SELECT EXTRACT(MONTH FROM "2017-06-15"); 
  • 年:

     SELECT EXTRACT(YEAR FROM "2017-06-15"); 

暫無
暫無

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

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