记Mysql中遇到的问题
- 时间增加8小时
date_add(Material.ProductionDate,INTERVAL 8 hour) as 别名
- 时间减少8小时
date_sub(Material.ProductionDate,INTERVAL 8 hour) as 别名
- 日期时间格式转换成日期格式
select date(now()) as time
- 获得日期所在的年、月、日、时、分、秒
select
now() as now,
year(now()) as year,
month(now())as month,
week(now())as week,
day(now())as day,
time(now())as time,
hour(now())as hour,
minute(now())as minute,
second(now())as second,
microsecond(now()) as mincrosecond
5. 获得年份的后两位。比如2022年转换后22
select year(now()) as now,year(now())% 100 as year
7. 日期格式转换成整型
select now(),convert(convert(now(),DATE),SIGNED) as time
**关于时间的详细具体细节请参考 **https://blog.csdn.net/wyk123_046/article/details/122998529
- 把几个字段合成一个显示
CONCAT_WS(“字段之间分隔的符号”,字段,字段) AS 别名 - 保留有效数字位。比如 1.0100 转换后 1.01
ltrim(cast(字段名 as float)) as 别名 - 在数字前加0补足数字位。比如 1 转换成 0001
select right(‘1000000’+cast(1 as varchar(20)),4) as num
1表示基础数字,4是一共4位 - 保留几位小数
round(字段,3) 保留3位小数 - 想要判断 case
(case
when PurchaseOrder.PurchaseOrderId then ReceiveOrder.Name
when TransferOrder.TransferOrderId then ReceiveOrder1.Name
when ReturnOrder.ReturnOrderId then ReceiveOrder2.Name
end ) as 别名 - mysql 判断 if
语法 IF(expr1,expr2,expr3)
IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值 - 把同一分组下的某个字段放到同一行上
语法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
1、SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
默认用逗号分隔,但有重复数值
2、去重:SELECT id,GROUP_CONCAT(DISTINCT score) FROM testgroup GROUP BY id
3、排序:SELECT id,GROUP_CONCAT(score ORDER BY score DESC) FROM testgroup GROUP BY id
4、分隔符:SELECT id,GROUP_CONCAT(score SEPARATOR ‘;’) FROM testgroup GROUP BY id - 分组,取一组数据某个字段的第几个
substring_index(GROUP_CONCAT(字段 SEPARATOR ‘’), '’, -1)
substring_index(被截取字段,关键字,关键字出现的次数)
注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束