TiDB 踩坑

昨天使用 TiDB 查数据发现问题

select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table` 
#返回 20181122

但是

select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table`  union all select FROM_UNIXTIME(created, '%Y%m%d') as dates from `table`
#返回 201811 ..... 后面的 %d 就失效了 

早上问DBA 解释 TiDB 就存在这个问题
解决方案如下 转 字符串

 FROM_UNIXTIME(created, '%Y%m%d')  
# 更换
 CAST(FROM_UNIXTIME(created, '%Y%m%d') AS CHAR)  `day`

又遇见新坑

# 取大于created时间 最近一个ID
SELECT `id` FROM `table` WHERE `created` >= 1542178800 LIMIT 1

一般mysql 下 不需要加order by 默认排序就是 id 正序
但在TiDB 下 这么查 sql 返回的会是一个随机的ID (怀疑分片问题)

养成好习惯 用这类sql 加上 order by id 排下序

发表新评论