我试图仅显示 三月份的日期,并且无法弄明白。
以下是表格
以下是我目前的代码......
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';
我做错了什么?
答案 0 :(得分:2)
您正在比较hoogle
或TIMESTAMP
,因此您不能在比较中同意日期,还需要提供时间。
请注意,在比较之前,将转换类型以匹配列类型。请查看此查询以获取插图:
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。关于何时以及如何使用和不使用之间的大量见解。