平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“MySQL日期函数怎么用?current_date和datediff用法”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
1.时间函数
| 函数名称 | 描述 |
|---|---|
| current_date() | 当前日期(年月日) |
| current_time() | 当前时间(时分秒) |
| current_timestamp() | 当前时间戳(时分秒 年月日) |
| date(datetime) | 得到 datetime 参数的日期部分 |
| date_add(date, interval d_value_type) | 落到代码里,在 date 中添加日期或时间,interval 后的数值单位能够是:year、minute、second、day (注意:interval需携带入参数) |
| date_sub(date, interval d_value_type) | 结合项目来看,在 date 中减去日期或时间,interval 后的数值单位能够是:year、minute、second、day |
| datediff(date1, date2) | 两个日期的差,单位是天(注意:第一个参数减第二个参数) |
| now() | 当前日期时间 |
MySQL内置了:当前日期 时间、时间计算、时间变化函数。
当前日期

当前时间

时间戳(当前日期、时间)

时间差

2.字符串函数
| 函数名称 | 描述 |
|---|---|
| charset(str) | 得到字符串字符集 |
| concat(string2 [, …]) | 连接字符串 |
| instr(string, substring) | 得到 substring 在 string 中出现的位置,没有得到 0 |
| ucase(string2) | 转换成大写 |
| lcase(string2) | 转换成小写 |
| left(string2, length) | 从 string2 中的左边起取 length 个字符 |
| length(string) | string 的长度 |
| replace(str, search_str, replace_str) | 在 str 中用 replace_str 替换所有的search_str |
| strcmp(string1, string2) | 逐字符比较两字符串大小(注意受校验集影响,具体情况视校验集而定) |
| substring(str, position [, length]) | 结合项目来看,从 str 的 position 开始,取 length 个字符(下标自1开始) |
| ltrim(string)、rtrim(string)、trim(string) | 去除前空格、后空格、或前后空格(注意:内部的空格不会消除) |
长度(字节为单位)

字符集判断
字符串拼接

大写
修剪(trim)

替换
3.数学函数
| 函数名称 | 描述 |
|---|---|
| abs(number) | 绝对值函数 |
| bin(decimal_number) | 十进制转换二进制 |
| hex(decimalNumber) | 转换成十六进制 |
| conv(number, from_base, to_base) | 进制转换(2~36进制间的转换) |
| ceiling(number) | 向上取整 |
| floor(number) | 向下取整 |
| format(number, decimal_places) | 格式化,保留小数位数 |
| rand() | 得到随机浮点数,范围 [0.0, 1.0) |
| mod(number, denominator) | 取模,求余 |
绝对值

十进制转二进制
随机浮点数

取模(符号由第一个被除数的符号决定)

4.user sha2 ifnull
uer() -- 查询得到当前连接到 MySQL 服务器的用户信息。

sha2(encode_str, hash_length)
第 2 个参数:哈希长度,只能是
224、256、384、512中的一个

ifnull(v_1, v_2)
若第一个参数是null,得到第二个参数。

总结
在这个场景下,总的来说,MySQL日期函数适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

