首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从YYYY-MM-DD HH:MI:SS转换日期时间。使用SQL转换为YYYY-MM

如何从YYYY-MM-DD HH:MI:SS转换日期时间。使用SQL转换为YYYY-MM
EN

Stack Overflow用户
提问于 2020-06-23 18:30:11
回答 2查看 372关注 0票数 0

使用支持Oracle、SQL Server、IBM、MySQL、Sybase、Informix、PostgreSQL和ANSI SQL方言的平台。

我需要能够按年和月分组客户销售。所需的日期格式为YYYY-MM,例如2019-06。当前格式为YYYY-MM-DD HH:MI:SS。

下面是我到目前为止所知道的。我尝试了很多不同的方法,但都不能达到预期的效果。

代码语言:javascript
复制
SELECT DISTINCT "Customer Name",
ROUND(SUM("Price Ex"), 2) AS 'Sales'
FROM  "ZOHO-0006 Invoice Lines" 
GROUP BY "Customer Name"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-23 18:32:32

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

代码语言:javascript
复制
SELECT LEFT(datecol, 7) as yyyymm, ROUND(SUM("Price Ex"), 2) AS Sales
FROM  "ZOHO-0006 Invoice Lines" 
GROUP BY LEFT(datecol, 7);

如果值存储为日期/时间数据类型,请使用日期函数,例如:

代码语言:javascript
复制
SELECT YEAR(datecol), MONTH(datecol), ROUND(SUM("Price Ex"), 2) AS Sales
FROM  "ZOHO-0006 Invoice Lines" 
GROUP BY YEAR(datecol), MONTH(datecol);

要获取一列中的值,可以使用format()

代码语言:javascript
复制
SELECT FORMAT(datecol, '%Y-%m') as yyyymm

extract()

代码语言:javascript
复制
SELECT EXTRACT(year_month from datecol) as yyyymm
票数 1
EN

Stack Overflow用户

发布于 2020-06-23 19:38:21

如果datecol的数据类型是timestamp,可以这样尝试:

代码语言:javascript
复制
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格式存储:

代码语言:javascript
复制
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”操作会处理它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62532669

复制
相关文章

相似问题

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