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