Mysql的骚操作说明

Mysql的常规操作

MySQL5.7中文参考手册 MySQL8.0中文参考手册

Mysql中文网

https://www.mysqltutorial.org/ - 搜索mysql的用法

记录些不常用,但是很实用的操作,旨在在MySQL语言能解决的批量操作的问题,不动用其他动态或静态语言的辅助。

1、FROM_UNIXTIME 时间戳转时间格式

select scode,sid,gender,type,FROM_UNIXTIME(report_time) as report_time,FROM_UNIXTIME(add_time) as add_time,FROM_UNIXTIME(start_time) as start_time,FROM_UNIXTIME(review_time)as review_time  from hd_samples;

2、UNIX_TIMESTAMP 时间格式转时间戳

select sid,gene_name,rs,start,end, chr,UNIX_TIMESTAMP(times) as times from hd_user_locinfo;

3、group_concat,concat 分组拼接数据列,拼接数据列

通过例子熟悉使用方式

# 采用去重字段,并分组拼接
SELECT GROUP_CONCAT(DISTINCT User ORDER BY User SEPARATOR '\n')
   FROM mysql.user;
# 简单分组拼接
select scode,  GROUP_CONCAT(concat('\'',scode,'\'')) from hd_samples where id in ('61515','61505')

结果如下:

scode GROUP_CONCAT(concat(''',scode,'''))
KC47627683 'KC47627683','KC46732816'

理论解释:

GROUP_CONCAT:该函数将分组中的非NULL值串联起来称为一个字符串。如果分组中的某个值为NULL,而串联的结果为NULL CONCAT(str1,str2):返回由连接参数产生的字符串。可能有一个或多个参数。

MariaDB 参考文献

mysqltutorial

4、获取3个月或一年前的时间及时间戳

# 三个月前的时间,格式:xxxx-xx-xx,时间戳是10位
select SUBDATE(CURDATE(),INTERVAL 3 month),UNIX_TIMESTAMP(SUBDATE(CURDATE(),INTERVAL 3 month));
# 指定日期三个月后的日期
select DATE_ADD('2021-01-09', INTERVAL 3 month) 
# 当前三个月后的日期
select DATE_ADD(CURDATE(), INTERVAL 3 month) 
时间格式(SUBDATE(CURDATE(),INTERVAL 3 month)) 时间戳(UNIX_TIMESTAMP(时间格式))
2020-10-27 1603728000
# 一年前的时间,格式:xxxx-xx-xx xx:xx:xx,格式:xxxx-xx-xx,时间戳是10位
select SUBDATE(NOW(),INTERVAL 1 YEAR),UNIX_TIMESTAMP(SUBDATE(NOW(),INTERVAL 1 YEAR));
时间格式(SUBDATE(NOW(),INTERVAL 1 YEAR)) 时间戳(UNIX_TIMESTAMP(时间格式))
2020-01-27 17: 18: 08 1580116688

参考地址

胡梦旭博客
请先登录后发表评论
  • latest comments
  • 总共0条评论