[英]How can I convert date format from YYYY-MM-DD to YYYY-MM in sql
[英]How to convert DATETIME from YYYY-MM-DD HH:MI:SS. to YYYY-MM using SQL
Using a platform that supports Oracle, SQL Server, IBM DB2, MySQL, Sybase, Informix, PostgreSQL and ANSI SQL dialects.
我需要能够按年和月对客户销售进行分组。 所需的日期格式为 YYYY-MM,例如 2019-06。 当前格式为 YYYY-MM-DD HH:MI:SS。
以下是我到目前为止所拥有的。 我尝试了许多不同的事情,但无法按要求开始工作。
SELECT DISTINCT "Customer Name",
ROUND(SUM("Price Ex"), 2) AS 'Sales'
FROM "ZOHO-0006 Invoice Lines"
GROUP BY "Customer Name"
如果数据类型是字符串,可以使用:
SELECT LEFT(datecol, 7) as yyyymm, ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY LEFT(datecol, 7);
如果值存储为日期/时间数据类型,请使用日期函数,例如:
SELECT YEAR(datecol), MONTH(datecol), ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY YEAR(datecol), MONTH(datecol);
要获取一列中的值,可以使用format()
:
SELECT FORMAT(datecol, '%Y-%m') as yyyymm
或extract()
:
SELECT EXTRACT(year_month from datecol) as yyyymm
如果 datecol 的数据类型是时间戳,你可以试试这个:
SELECT
TO_CHAR(datecol,'YYYY-MM'),
ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY TO_CHAR(datecol,'YYYY-MM');
或者,如果它以 text/varchar2 格式存储:
SELECT
TO_CHAR(TO_DATE(datecol,'YYYY-MM-DD HH:MI:SS'),'YYYY-MM'),
ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY TO_CHAR(datecol,'YYYY-MM');
此外,您无需明确地“区分”。 'Group by' 操作负责处理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.