我一直在尝试编写一个查询,以获取Oracle数据库在特定日期的条目计数。问题是数据库中的最后修改日期的格式是yyyy-mm-dd hh:mm:ss,而我需要它的格式是yyyy-mm-dd,这样它就会计算每天发生的次数,而不是每秒。当我截断并转换日期时,查询返回的格式为yyyy-mm-dd 00:00:00,但仍然没有汇总每天的计数。我的问题如下所示。我一直在运行它的变体。
SELECT COUNT(*), TRUNC(CAST(LASTMODIFIED AS DATE))
FROM LEADEXTENSIONS
GROUP BY LASTMODIFIED
ORDER BY LASTMODIFIED DESC发布于 2019-11-14 22:02:49
Oracle没有DATETIME数据类型;它有DATE或TIMESTAMP,两者都有年、月、日、小时、分钟和秒组件(TIMESTAMP还可以有小数秒和时区组件)。
鉴于此,CAST( lastmodified AS DATE )不会做任何事情,因为您将把值从DATE数据类型转换为DATE数据类型。
您需要做的是TRUNC DATE值,该值将DATE的小时、分钟和秒组件设置为午夜(00:00:00),然后在SELECT和GROUP BY子句中使用以下内容:
SELECT COUNT(*),
TRUNC( lastmodified )
FROM leadextensions
GROUP BY TRUNC( lastmodified )
ORDER BY TRUNC( lastmodified )发布于 2019-11-14 01:27:53
你的问题是GROUP BY。您需要在Oracle中重复该表达式:
SELECT COUNT(*), TRUNC(CAST(LASTMODIFIED AS DATE))
FROM LEADEXTENSIONS
GROUP BY TRUNC(CAST(LASTMODIFIED AS DATE))
ORDER BY TRUNC(CAST(LASTMODIFIED AS DATE)) DESC;尽管您截断了SELECT中的日期,但您的版本仍然使用GROUP BY的原始值。
https://stackoverflow.com/questions/58842506
复制相似问题