在CouchBase中查询UNIX时间时如何去除毫秒数?
解决CouchBase中Epoch时间戳转无毫秒标准日期的方法
针对你遇到的millis_to_str()始终输出毫秒的问题,这里有几个更便捷的处理方式:
1. 先截断时间戳的毫秒部分
直接对毫秒级时间戳做取整处理,去掉末尾的毫秒后再转换:
SELECT MILLIS_TO_STR(FLOOR(creationDate / 1000) * 1000, "1111-11-11 11:11:11") AS pDate FROM your_collection;
原理:将时间戳除以1000取整(得到秒级时间),再乘以1000还原为毫秒级(但毫秒部分为0),此时millis_to_str()转换后就不会带毫秒。
2. 使用DATE_TRUNC截断到秒级
借助DATE_TRUNC函数直接把时间戳截断到秒,再转换为字符串:
SELECT MILLIS_TO_STR(DATE_TRUNC('second', MILLIS_TO_UTC(creationDate)), "1111-11-11 11:11:11") AS pDate FROM your_collection;
原理:MILLIS_TO_UTC()先把时间戳转为UTC时间对象,DATE_TRUNC('second', ...)将该时间对象截断到秒(丢弃毫秒),最后用millis_to_str()转为指定格式。
3. 直接截取字符串前19位
如果不想修改时间戳,也可以直接截取转换后字符串的前19位(对应YYYY-MM-DD HH:MM:SS的固定长度):
SELECT SUBSTR(MILLIS_TO_STR(creationDate, "1111-11-11 11:11:11"), 0, 19) AS pDate FROM your_collection;
这个方法比SPLIT更简洁,适合快速处理固定格式的日期字符串。
内容的提问来源于stack exchange,提问作者Parisa Ebrahimifar
相关产品推荐
相关产品推荐

