提问者:小点点

如何从YYYY-MM-DD hh:mi:ss转换日期时间。 使用SQL到YYYY-MM


使用支持Oracle,SQL Server,IBM DB2,MySQL,Sybase,Informix,PostgreSQL和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"

共2个答案

匿名用户

如果数据类型是字符串,则可以使用:

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);

匿名用户

如果datecol的datatype为timestamp,则可以尝试如下操作:

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');

或者,如果以文本/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');

此外,你不需要明确地做'distinction'。 “GROUP BY”操作会处理它。