首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在mysql中从日期获取月份

如何在mysql中从日期获取月份
EN

Stack Overflow用户
提问于 2010-01-11 11:59:18
回答 5查看 83.6K关注 0票数 26

我希望能够使用下面这样的语句从mysql中获取结果:

代码语言:javascript
复制
SELECT * 
  FROM table 
 WHERE amount > 1000 

但是我想获取某个特定月份和年份的结果(基于用户的输入)……我是这样尝试的:

代码语言:javascript
复制
SELECT * 
  FROM table 
 WHERE amount > 1000 
   AND dateStart = MONTH('$m')   

...$m是一个月,但它给出了错误。

在该表中,它实际上有两个日期:startDateendDate,但我主要关注startDate。输入值将是月份和年份。我该如何表述根据当年那个月份获得结果的SQL语句?

EN

回答 5

Stack Overflow用户

发布于 2010-01-11 12:02:22

使用month()函数。

代码语言:javascript
复制
select month(now());
票数 8
EN

Stack Overflow用户

发布于 2010-01-11 12:09:59

例如。

代码语言:javascript
复制
$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, ...

这将创建一个查询,例如

代码语言:javascript
复制
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 ()的月份(和年份)的第一天之后。

'2010-01-01'+Interval 1 month不会在不同行之间更改。MySQL将只计算一次该术语,并且可以利用索引进行搜索。

票数 3
EN

Stack Overflow用户

发布于 2010-01-11 12:18:17

试试这个:

代码语言:javascript
复制
SELECT * 
FROM table 
WHERE amount > 1000 AND MONTH(dateStart) = MONTH('$m') AND YEAR(dateStart) = YEAR('$m')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2039839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档