最近一段时间带着几个人一起做了好多项目上的需求,有在新的微服务项目实现,也有在旧系统上做开发。在做代码review的过程中,看着每个人写sql都有着不一样的实现,让我看到了自己的不足,有些函数自己都不知道,从来都没有用过。所以参照mysql文档开始学习,点滴积累。
1. ADDDATE()
1)说明:ADDDATE()函数有两种使用形式,第一种使用和DATE_ADD()同义,可指定计算间隔时 间的单位,年,月,日,小时都行;而第二种使用形式是指按天给指定日期加间隔值,此种用法DATE_ADD()函数是不支持的。
2)语法:ADDDATE(date,INTERVAL expr unit),ADDDATE(expr,days)
3)实例:
2. ADDTIME()
1)说明:ADDTIME()函数是指将expr2和expr1相加,返回的结果。expr1可以是一个时间或时间表达式,expr2是一个时间表达式。
2)语法:ADDTIME(expr1,expr2)
3)实例:
3. CURDATE()
1)说明:返回当前日期,格式为’YYYY-MM-DD’ 或者 ‘YYYYMMDD’,取决于是将此函数当字符串还是数字型使用。
2)语法:CURDATE(),和CURRENT_DATE和CURRENT_DATE()同义。
3) 实例:
4. DATEDIFF()
1)说明:返回两个日期或日期时间的间隔天数,但仅仅只有日期参与计算。
2)语法:DATEDIFF(expr1,expr2)。
3) 实例:
5. DATE_FORMAT()
1)说明:用于以不同的格式显示日期/时间数据。
2)语法:DATE_FORMAT(date,format)。
3) 实例:
4) 附录:对不同说明符的描述
| 格式 | 描述 |
|---|---|
| %a | 星期,缩写(Sun..Sat) |
| %b | 月,缩写(Jan..Dec) |
| %c | 月,数值(0..12) |
| %D | 带英文后缀的天(0th,1st,2nd,3rd,…) |
| %d | 月的天,数值(00…31) |
| %e | 月的天,数值(0..31) |
| %f | 微秒 |
| %H | 小时(00-23) |
| %h | 小时(01-12) |
| %i | 分钟(00-59) |
| %j | 年的天(001-366) |
| %k | 小时(0-23) |
| %l | 小时(1-12) |
| %M | 月名 |
| %m | 月,数值(00-12) |
| %p | AM或PM |
| %r | 时间,12-小时(hh:mm:ss AM或PM) |
| %S | 秒(00-59) |
| %s | 秒(00-59) |
| %T | 时间,24-小时(hh:mm:ss) |
| %W | 星期名(Sunday..Saturday) |
| %w | 周的天(0=星期日,6=星期六) |
| %Y | 年,4位 |
| %y | 年,2位 |
6. STR_TO_DATE()
1)说明:和DATE_FORMAT()是相反的过程,DATE_FORMAT()是将日期以字符串形式输出,而STR_TO_DATE()是指将字符串转换为日期输出,如果从字符串提取出的是一个非法的日期,时间或时间日期,那么此函数会返回null,并产生警告。
2)语法:STR_TO_DATE(str,format)。
3) 实例: