[ES]ElasticSearch强转日期的时区问题
问题
由于ES不能修改时区,且默认时区始终为UTC。
当才查询数据时,通过强转获得的日期并不是想要的,通过分析发现,正是由于默认时区导致结果相差了8个小时。
查询语句:
POST http://localhost:9200/_sql?format=text
{
"query": "SELECT 1701387000000::date as dt, DATETIME_FORMAT(1701387000000::TIMESTAMP,'yyyy-MM-dd')::DATE as df",
"time_zone":"Asia/Shanghai"
}
返回结果:
dt | df
------------------------------------+------------------------------------
2023-11-30T00:00:00.000Z|2023-12-01T00:00:00.000Z
可以看出,通过时间戳强转获得的日期,由于跨天,导致数据相差一天,更加严重的是,如果将数据归类到月份统计中,势必出现问题,所以强转方式,即便指定了时区,却不能生效。
结论
所以在处理时间日期时,特别注意时区问题,需通过时间日期函数+指定时区参数方式来达到期望的目标。