TIMESTAMPDIFF

TIMESTAMPDIFF 是一个MySQL函数,用于计算两个日期或时间之间的差值。函数返回两个日期或时间之间的差值,并以指定的单位表示。

语法:

TIMESTAMPDIFF(unit, start_date, end_date)

其中:

  • unit是计算的单位。可以是以下值:YEAR(年)、QUARTER(季度)、MONTH(月)、DAY(天)、HOUR(小时)、MINUTE(分钟)、SECOND(秒)。
  • start_date 是开始日期或时间。
  • end_date 是结束日期或时间。

示例:

  • 计算了两个日期之间的天数差。
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-02-01') AS day_diff;

CONCAT

CONCAT函数是MySQL中用来连接多个字符串的函数。它可以将两个或多个字符串拼接在一起,并返回拼接后的结果。

语法:

concat(str1, str2,...)

其中:

  • 返回结果为连接参数产生的字符串
  • 如果有任何一个参数为null,则返回值为null。

示例:

SELECT CONCAT('Hello', ' ', 'World');

输出:Hello World

round

-round函数是一个常用的四舍五入函数。它可以用于对浮点数进行取整运算。

它有两种常用的用法:

  • 一种是只传入一个参数,即要进行取整的浮点数值;
  • 另一种是传入两个参数,第一个参数是要进行取整的浮点数值,第二个参数是精确到小数点后几位,默认为0。

语法:

SELECT ROUND(column_name,decimals) FROM [表名];

其中:

  • column_name: 要舍入的字段,必需
  • decimals: 规定要返回的小数位数,可选

示例:

  • ROUND(X): 返回’参数X’四舍五入的一个整数
SELECT ROUND(1.58);

查询结果:2

  • ROUND(X,D): 返回’参数X’四舍五入的有 D位小数的一个数字。
  • 如果D为0,结果将没有小数点或小数部分;
  • 如果D为负数,这时是指定小数点左边的D位整数位为0,同时小数位均为0
SELECT ROUND(1123.26723,1);
SELECT ROUND(1123.26723,0);
SELECT ROUND(1123.26723,-1);

查询结果:

  • 1123.3
  • 1123
  • 1120

IF

MySQL的IF函数是一个流程控制函数,可以根据条件的真假返回不同的值。

语法:

IF(condition, value_if_true, value_if_false)

其中:

  • condition:要进行判断的条件表达式或值。
  • value_if_true:如果条件为真,将返回的值。
  • value_if_false:如果条件为假,将返回的值。

示例:

  • 这个查询将返回一个结果集,包含name、age、gender和is_adult字段。如果age大于等于18,则is_adult字段的值为’成年’,否则为’未成年’。
SELECT name, age, gender, IF(age >= 18, '成年', '未成年') AS is_adult
FROM student;

CASE WHEN

CASE WHEN语句是一种条件表达式,用于在SQL查询中根据不同的条件选择不同的结果。

语法:

CASE WHEN condition1 THEN result1
     WHEN condition2 THEN result2
     ...
     ELSE resultN
END

其中:

  • condition1、condition2等是条件表达式,可以是列与值之间的比较、逻辑运算符的组合等。
  • result1、result2等是在条件满足时返回的结果,可以是常量、列名、表达式等。
  • ELSE子句是可选的,用于指定当所有条件不满足时返回的默认结果。

示例:

  • 这个查询会从名为"students"的表中选择姓名(name)和年龄(age)列,并使用CASE WHEN语句根据不同的年龄段给每个人分组。如果年龄小于18岁,则分到"未成年"组;如果年龄在18到60岁之间,则分到"成年"组;否则分到"老年"组。然后,将每个人的分组结果作为新的列"age_group"返回。
SELECT name, age,
   CASE 
      WHEN age < 18 THEN '未成年'
      WHEN age >= 18 AND age < 60 THEN '成年'
      ELSE '老年'
   END AS age_group
FROM students;

DATE(date)

返回指定日期/时间表达式的日期部分或将文本转为日期格式

语法:

DATE(date)

示例:

select date('2022-4-15 12:30:48');

结果:2022-04-15

date_formate

date_format是一种用于格式化日期的函数,可以将日期按照指定的格式进行显示。

语法:

date_format('date', '格式');

在format字符串中可用标志符:

  • %M 月,名字(january……december)
  • %Y 年, 数字, 4 位
  • %y 年, 数字, 2 位
  • %a 缩写的星期名字(sun……sat)
  • %d 月份中的天数, 数字(00……31)
  • %e 月份中的天数, 数字(0……31)
  • %m 月, 数字(01……12)
  • %c 月, 数字(1……12)
  • %b 缩写的月份名字(jan……dec)
  • %j 一年中的天数(001……366)
  • %h 十二时制的小时(00……12)
  • %k 二十四时制的小时(0……23)
  • %i 分钟, 数字(00……59)
  • %r 时间,12 小时(hh:mm:ss [ap]m)
  • %s 秒(00……59) %p am或pm
  • %w 一个星期中的天数(0=sunday ……6=saturday )
  • %u 一年中的周数(1……53)

示例:

select date_format('2022-4-15 13:30:28','%Y-%m-%d');

结果:2022-04-15