有四种方法:
1. 将 second 数据转为int类型与 DateTime数据直接相加:
select ActionDay + minute.int() from T
2. 将Datetime与Second直接相加,再转为DateTime
类型转换有两种方法,datetime()和cast(, datetime):
select datetime(ActionDay+minute) from T
select cast(ActionDay+minute, DATETIME) as dt from T
3. 使用concatDateTime()方法将DateTime数据的日期部分与Second进行连接:
select concatDateTime(date(ActionDay),minute) from T
在本地进行测试,分别使用上述方法在一个1千万行记录的内存表上进行合并操作:
n=10000000 T = table(take(2023.01.10T00:00:00 2023.01.10T00:00:00,n) as `ActionDay, take(15:00:00 15:19:00 ,n) as `minute); timer select cast(ActionDay+minute, DATETIME) as dt from T timer select concatDateTime(date(ActionDay),minute) from T timer select ActionDay + minute.int() from T timer select datetime(ActionDay+minute) from T
测试结果如下:
Time elapsed: 19.946 ms Time elapsed: 16.956 ms Time elapsed: 10.971 ms Time elapsed: 9.973 ms
可以看到,ActionDay + minute.int()与datetime(ActionDay+minute)两种方法的速度相对较快,分别为9.973毫秒与10.971毫秒。