MySQL:仅显示3月份内的日期

时间:2015-10-25 21:58:39

标签: mysql

我试图仅显示 三月份的日期,并且无法弄明白。

以下是表格

以下是我目前的代码......

SELECT billing.charged_datetime-- SUM(billing.amount) AS total_revenue
FROM lead_gen_business.billing;
WHERE billing.charged_datetime BETWEEN '2012-03-01' AND '2012-03-30';

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您正在比较hoogleTIMESTAMP,因此您不能在比较中同意日期,还需要提供时间。

请注意,在比较之前,将转换类型以匹配列类型。请查看此查询以获取插图:

DATETIME

所以一个选项是使用如下条件(假设数据类型中没有小数):

SELECT CAST('2015-10-18' AS DATETIME)

最佳(可读)选项是将条件更改为:

WHERE billing.charged_datetime BETWEEN '2012-03-01' AND '2012-03-30 23:59:59'

https://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

看到您对其他答案的评论后进行编辑。这是你在找什么?

WHERE MONTH(charged_datetime) = 3 AND YEAR(charged_datetime) = 2012

答案 1 :(得分:1)

您在Datetime中输入charged_datetime。您需要使用mysql的convert函数。

使用: -

SELECT billing.charged_datetime-- SUM(billing.amount) AS total_revenue
FROM lead_gen_business.billing;
WHERE billing.charged_datetime BETWEEN CONVERT(datetime,'2012-03-01)' AND CONVERT(datetime,'2012-03-30');

答案 2 :(得分:1)

你做错了是,你的来自00:00:00,你的结尾应该有23:59:59(假设秒精度)。

无论如何,你想要的是:

SELECT billing.charged_datetime
FROM lead_gen_business.billing
WHERE DATE_FORMAT(billing.charged_datetime, "%Y %m") = "2015 March";

你应该花一些时间浏览mysql documentation。关于何时以及如何使用和不使用之间的大量见解。