MySQL中AddDate函数的疑惑
无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录。
root@localhost:mysql3376.sock [(none)]>select now() , addtime(now(),'33 0:0:1') ;
+---------------------+---------------------------+
| now() | addtime(now(),'33 0:0:1') |
+---------------------+---------------------------+
| 2017-02-08 11:23:50 | 2017-03-13 11:23:51 |
+---------------------+---------------------------+
1 row in set (0.00 sec) root@localhost:mysql3376.sock [(none)]>select now() , addtime(now(),'34 0:0:1') ;
+---------------------+---------------------------+
| now() | addtime(now(),'34 0:0:1') |
+---------------------+---------------------------+
| 2017-02-08 11:23:54 | 2017-03-14 11:23:55 |
+---------------------+---------------------------+
1 row in set (0.00 sec) root@localhost:mysql3376.sock [(none)]>select now() , addtime(now(),'35 0:0:1') ;
+---------------------+---------------------------+
| now() | addtime(now(),'35 0:0:1') |
+---------------------+---------------------------+
| 2017-02-08 11:24:01 | 2017-03-15 10:24:00 |
+---------------------+---------------------------+
1 row in set, 1 warning (0.00 sec) root@localhost:mysql3376.sock [(none)]>select now() , addtime(now(),'36 0:0:1') ;
+---------------------+---------------------------+
| now() | addtime(now(),'36 0:0:1') |
+---------------------+---------------------------+
| 2017-02-08 11:24:05 | 2017-03-15 10:24:04 |
+---------------------+---------------------------+
1 row in set, 1 warning (0.00 sec)
仔细一看上文的4条SQL语句,第一句和第二句的结果是结果是正确的,但第三句和第四句的结果并不是期望的结果。
再仔细一看,第三句和第四句相比于第一句和第二句多输出了一个“1 warning”。来看看warning是提示了什么
root@localhost:mysql3376.sock [(none)]>show warnings ;
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '36 0:0:1' |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)
warning提示“截断不正确的时间值”。为什么这个时间值不正确呢?
MySQL官方文档中有说明time值格式的取值说明:
MySQL recognizes TIME values in these formats: • As a string in 'D HH:MM:SS' format. You can also use one of the following “relaxed”syntaxes: 'HH:MM:SS', 'HH:MM', 'D HH:MM', 'D HH', or 'SS'. Here D represents days and can have a value from to . • As a string with no delimiters in 'HHMMSS' format, provided that it makes sense as a time. For example, '' is understood as '10:11:12', but '' is illegal (it has a nonsensical minute part) and becomes '00:00:00'. • As a number in HHMMSS format, provided that it makes sense as a time. For example, is understood as '10:11:12'. The following alternative formats are also understood: SS, MMSS, or HHMMSS.
总结:
一、虽然MySQL的官方文档说明了time value中“D”的值只能是从0~34,但没有具体说明原因;
二、遇到问题,需要仔细查看输出内容,我只是留意到了结果有误,但并没有注意到有warning,还好有高人指点;
以上,如有错谬,请不吝指正。
MySQL中AddDate函数的疑惑的更多相关文章
- thinkphp中的内置操作数据库与mysql中的函数汇总
8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...
- mysql中now()函数的使用,还有oracle的sysdate,可能埋下的坑
mysql中now()函数的使用,还有oracle的sysdate 在需求中如果系统中药添加当前操作的时间那么很简单的一个操作在写sql的时候直接在这个字段对应的位置写上now()函数就可以了,这样就 ...
- MySQL中concat函数(连接字符串)
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- Mysql中的函数
什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中 ...
- MySQL中concat函数
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- mysql中INSTR函数的用法
mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...
- MySQL中group_concat函数-和group by配合使用
MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...
- MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
- mysql中的函数与存储过程
mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...
随机推荐
- img的事件
<img src="../images/clock.jpg" onload=alert('加载成功'); onerror=alert("加载失败");/& ...
- C# 获取控制面板软件信息
一般情况下要知道的注册表位置 Software\Microsoft\Windows\CurrentVersion\Uninstall 要知道的根目录集合 List<RegistryKey> ...
- Android四层架构
Andrid系统的体系结构设计为多层结构,这种结构在给用户提供安全保护的同时还保持了开放平台的灵活性.如下图所示: Google官方提供的Android系统的四层架构图 从上到下进行简单介绍: 一 ...
- DP Intro - OBST
http://radford.edu/~nokie/classes/360/dp-opt-bst.html Overview Optimal Binary Search Trees - Problem ...
- Docker的镜像迁移
[root@localhost ~]# mkdir /opt/soft/ [root@localhost ~]# docker save c3987965c15d > /opt/soft/pos ...
- vue之mapMutaions的使用 && vuex中 action 用法示例 && api.js的使用
vue之mapMutations的使用 我们通过Mutation来改变store中的state,方法往往是在子组件中使用 this.$store.commit(); 来实现,但是这样的缺点是不容易查看 ...
- pulic——function(下载的公共的)
1. /* * 用途: 对Date的扩展,将 Date 转化为指定格式的String */ // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年( ...
- struts 2 报错Could not find action or resul 常见错误原因分析
1.struts.xml配置的action与我们访问的action或返回的result确实没有匹配导致.这个时候要仔细检查Struts.xml配置文件: 2.我们的action输入正确,返回结果经过无 ...
- HAProxy advanced Redis health check---ref
http://blog.exceliance.fr/2014/01/02/haproxy-advanced-redis-health-check/ HAProxy advanced Redis hea ...
- gitbook一仓库多本书持续化部署
引言 本文档用户指导新手如何部署GitLab+Jenkins自动化构建GitBook,并使用Nginx发布资料.在部署过程中,如遇到任何问题,请自行百度. 注意: 此文章的环境和数据,仅为用于调试的片 ...