Karp 的技术博客

昨天使用 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 排下序

Tidb

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月18日 06:24
1

目录

来自 《TiDB 踩坑》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时36分