首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Truncate SQL date-time to date

Truncate SQL date-time to date
EN

Stack Overflow用户
提问于 2019-11-14 01:26:50
回答 2查看 58关注 0票数 0

我一直在尝试编写一个查询,以获取Oracle数据库在特定日期的条目计数。问题是数据库中的最后修改日期的格式是yyyy-mm-dd hh:mm:ss,而我需要它的格式是yyyy-mm-dd,这样它就会计算每天发生的次数,而不是每秒。当我截断并转换日期时,查询返回的格式为yyyy-mm-dd 00:00:00,但仍然没有汇总每天的计数。我的问题如下所示。我一直在运行它的变体。

代码语言:javascript
复制
SELECT COUNT(*), TRUNC(CAST(LASTMODIFIED AS DATE)) 
FROM LEADEXTENSIONS 
GROUP BY LASTMODIFIED 
ORDER BY LASTMODIFIED DESC
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-14 22:02:49

Oracle没有DATETIME数据类型;它有DATETIMESTAMP,两者都有年、月、日、小时、分钟和秒组件(TIMESTAMP还可以有小数秒和时区组件)。

鉴于此,CAST( lastmodified AS DATE )不会做任何事情,因为您将把值从DATE数据类型转换为DATE数据类型。

您需要做的是TRUNC DATE值,该值将DATE的小时、分钟和秒组件设置为午夜(00:00:00),然后在SELECTGROUP BY子句中使用以下内容:

代码语言:javascript
复制
SELECT COUNT(*),
       TRUNC( lastmodified )
FROM   leadextensions
GROUP BY TRUNC( lastmodified )
ORDER BY TRUNC( lastmodified )
票数 0
EN

Stack Overflow用户

发布于 2019-11-14 01:27:53

你的问题是GROUP BY。您需要在Oracle中重复该表达式:

代码语言:javascript
复制
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的原始值。

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

https://stackoverflow.com/questions/58842506

复制
相关文章

相似问题

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