这几天做MySQL数据转移的时候出现问题,本地用的是MySQL 4.1,现在要移植到MySQL 5.5上。库脚本导入之后,发现更新数据的时候不报错,但是数据更新不成功,苦苦努力才发现datetime类型出了问题,程序里面给datetime类型的一个字段是一个空字符串,因此报错。奇怪的是,我把同样的SQL语句发给MySQL公司的人,他们可以正常执行,只是报出一个Warning。
经过大量的查找资料后发现,问题出现my.ini里面的sql-mode的设置上,sql-mode默认为"STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",这里把STRICT_TRANS_TALBES去掉之后,重启MySQL,就OK了。
STRICT_TRANS_TABLES的工作方式:
· 对于事务性存储引擎,在语句中任何地方出现的不良数据值均会导致放弃语句并执行回滚。
· 对于非事务性存储引擎,如果错误出现在要插入或更新的第1行,将放弃语句。(在这种情况下,可以认为语句未改变表,就像事务表一样)。首行后出现的错误不会导致放弃语句。取而代之的是,将调整不良数据值,并给出告警,而不是错误。换句话讲,使用STRICT_TRANS_TABLES后,错误值会导致MySQL执行回滚操作,如果可以,所有更新到此为止。
当然,如果想要执行严格的检查,请启用STRICT_TRANS_TABLES,那样的话,就得修改程序,把给datetime类型的空字符修改成"0000-00-00 00:00:00"即可。
这几天做MySQL数据转移的时候出现问题,本地用的是MySQL 4.1,现在要移植到MySQL 5.5上。库脚本导入之后,发现更新数据的时候不报错,但是数据更新不成功,苦苦努力才发现datetime类型出了问题,程序里面给datetime类型的一个字段是一个空字符串,因此报错。奇怪的是,我把同样的SQL语句发给MySQL公司的人,他们可以正常执行,只是报出一个Warning。 经过
今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个
数据库
所遇到的数据
类型
今天统统在这
里
讲清楚了,以后在看到什么数据
类型
,咱度应该认识,对我来说,最不熟悉的应该就是时间
类型
这块了。但是通过今天的学习,已经解惑了。下面就跟着我的节奏去把这个拿下吧。
一、数据
类型
MySQL
的数据
类型
有大概可以分为5种,分别是 整数
类型
、浮点数
类型
和定点数
类型
、日期和时间
类型
、
字符串
类型
、二进制
类型
。现在可以来看看你对这5种
类型
的熟悉程度,哪个看起来懵逼了,那就说明自己哪个不熟悉,不理解。
注意:整数
类型
和浮点数
类型
可以统称为数值数据
类型
,这不难理解。
数值数据
类型
整数
类型
:T
大家好, 这
里
是小小! 今天, 实验室的一个学长发现我提交的一次代码有
问题
! 差点以为要被特殊关心, 好了说正事了!
看到
数据库
中时间
日期类
型, 很多人就会说了哈, 直接存
字符串
String
类型
呀!简单点~emm
最开始我也是这么想的, 然后被驳回了!
字符串
存储日期
把日期和时间当做一个
字符串
进行存储,进而将日期和时间拆分成两个字段,一个字段记录日期(如yyyy-MM-dd),另外一个字段存储时间(如:HH:mm:ss)的形式。此种方式就不多说,除非极个别的场景,不建议使用。当使用此种方式进行处
3.记事本打开后将
datetime
类型
字段更改为
`create_time`
datetime
NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
设置默认值为CURRENT_TIMESTAMP
4.最后在将该sql文件导入
数据库
中就有非空有默认值
sql中
datetime
类型
的格式:插入数据: ' 2012-04-07 12:58:00.000'
再插入数据到表中时:注意表的字段那些是不可以
为空
的,即必须要填写的;
c# 中呢: 应该 将日期
字符串
转化为
datetime
DateTime
date1=
DateTime
.Parse("2005-11-5 5:21:25");
2012-4-5 8:14:00 这只是
tran.TransactionTime = bet.CreationDate.ToString() == "0001/1/1 0:00:00" ?
DateTime
.Now : bet.CreationDate;
数据库
里
面DataTime时间
类型
字段,如果为null时,查询出来时间值为"0001/1/1 0:00:00" 这是一个溢出Sql
DateTime
超出范围的时间值,将...
koa链接
mysql
数据库
操作,在写表单插入数据功能的时候,发现在一个date
类型
的字段传入空值的时候,一直报错,
不能
正常插入空值.排查后发现,原来这个字段是date
类型
,而我在插入的时候,如果不给这个字段赋值,那么它默认是“”,
类型
是一个
字符串
,而不是date
类型
(也不是一个对象
类型
).
发现
问题
了,我的解法是在对从表单获取的这个数值做了下判断,判断这个值是否
为空
,如果
为空
,则将这个字段赋值null,否则直接从表单获取数值 .
let birthday = postData.birthday;
```sql
SELECT TO_DATE('2022-03-01 10:30:25.123456', 'yyyy-mm-dd hh24:mi:ss.ff6') FROM dual;
这个语句将
字符串
'2022-03-01 10:30:25.123456'转换为
DATETIME
类型
,并输出结果。其中,'yyyy-mm-dd hh24:mi:ss.ff6'是日期时间格式化
字符串
,用于指定输入
字符串
的日期时间格式。
在格式化
字符串
中,'yyyy'表示年份,'mm'表示月份,'dd'表示日期,'hh24'表示24小时制的小时数,'mi'表示分钟数,'ss'表示秒数,'ff6'表示6位微秒数。根据实际需要,可以根据需要调整格式化
字符串
。
需要注意的是,如果输入
字符串
格式不符合格式化
字符串
中指定的格式,TO_DATE函数将返回一个错误。
Selenium.:
linux下安装mysql在configure过程中出现error: No curses/termcap library found的解决办法
快乐的老鼠:
装系统时提示:无法安装win7系统到该分区磁盘0分区1
陈_小哥哥:
php验证手机号、身份证、邮箱
qq_38114717:
js去除数组中重复元素的方法
qq_35840788: