TDengine icon indicating copy to clipboard operation
TDengine copied to clipboard

How to get hours from timestamps

Open hoilung opened this issue 2 months ago • 4 comments

怎么从一个时间类型的数据中,获取小时部分,新老版本貌似都没有找到相关操作 本来想的截取字符串,但是函数又不支持嵌套,也没有直接的hour函数,也没有找到能格式化时间的功能 当前版本是 linux 3.0.7.0

select TIMETRUNCATE(now(),1h)   //ok
select SUBSTR('2025-10-18 10:00:00.000',11,3)  //ok
select SUBSTR(now(),11,3)  
select SUBSTR(TIMETRUNCATE(now(),1h),11,3)  
//TDengine ERROR (0x2802):desc: Invalid parameter data type : substr

hoilung avatar Oct 18 '25 02:10 hoilung

我看下

yu285 avatar Oct 28 '25 08:10 yu285

您好 可能我没太理解清楚

:select SUBSTR('2025-10-18 10:00:00.000',11,3) //ok

这个不就是获取小时部分么?

yu285 avatar Oct 29 '25 15:10 yu285

您好 可能我没太理解清楚

:select SUBSTR('2025-10-18 10:00:00.000',11,3) //ok

这个不就是获取小时部分么?

substr只适合固定字符的截取,无法嵌套,例如

select ts,SUBSTR(ts,11,3) from db.meters limit 10

按理说 date_part 和date_format 都是数据库的基本操作。其他关系型都支持 但是针对时序数据库的tdengine,类似这样的处理时间函数没有,想从时间类型的值获取里面的小时

hoilung avatar Oct 30 '25 02:10 hoilung

@hoilung 可以使用 select to_char(now(),'HH');

ZeLv01 avatar Dec 04 '25 00:12 ZeLv01