为什么GF框架数据库查delete_at本来是0000-00-00 00:00:00 却返回了-0001-11-30 00:00:00?
为什么GF框架数据库查delete_at本来是0000-00-00 00:00:00 却返回了-0001-11-30 00:00:00?
@ren-jimmy 这是因为给定的字符串0000-00-00 00:00:00
本身不是一个有效的日期格式,底层标准库在解析的时候返回的就是-0001-11-30 00:00:00
这个结果,不过GF
可以在做一层识别改进,将错误的日期格式转换为空。
不能直接返回字符串吗?因为既然mysql可以存储,最好是返回相同的数据
我觉得第一优先必须是数据的一致性,不然这将会导致各种各样的问题,其次才是是否哪种格式,格式可以自己去转换,但是返回的数据就不一致,这个完全没办法处理
@ren-jimmy 你的完整的建表语句给我试试呢,另外用的是mysql
什么版本?
CREATE TABLE stock
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
stock_name
varchar(50) NOT NULL COMMENT '股票名称',
stock_no
varchar(50) NOT NULL COMMENT '股票编号',
create_at
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_at
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
delete_at
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '删除时间',
PRIMARY KEY (id
),
KEY stock_no
(stock_no
) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='股票列表';
MySQL 版本:5.7.26
@ren-jimmy Error Code: 1067. Invalid default value for 'delete_at'
你是创建表的时候报错?应该不会,有给默认值,我这边没报错
@ren-jimmy 我在底层对时间转换做了写处理,当给定的时间不是一个有效的时间格式时,返回空,而不是-0001-11-30 00:00:00
,已提交到master
分支,你可以试试。