请问下Thinkphp 操作mysql数据库 插入date类型显示0000-00-00?
程序员文章站
2022-05-05 10:05:49
...
图片上边是要插入的数据,下边是getLastsql()获取的插入语句 dateline字段值变了?
回复内容:
图片上边是要插入的数据,下边是getLastsql()获取的插入语句 dateline字段值变了?
你看一下数据库里面dataline的格式,TP在插入数据的时候会检查字段在数据库中的格式并将数据转换为对应的格式。
if(!isset($this->options['bind'][':'.$key]) && isset($this->fields['_type'][$key])){
$fieldType = strtolower($this->fields['_type'][$key]);
if(false !== strpos($fieldType,'enum')){
// 支持ENUM类型优先检测
}elseif(false === strpos($fieldType,'bigint') && false !== strpos($fieldType,'int')) {
$data[$key] = intval($data[$key]);
}elseif(false !== strpos($fieldType,'float') || false !== strpos($fieldType,'double')){
$data[$key] = floatval($data[$key]);
}elseif(false !== strpos($fieldType,'bool')){
$data[$key] = (bool)$data[$key];
}
}
还有数据库字段定义的长度
首先数据库存时间字段推荐为int(10)类型
省空间效率高且非常灵活
时间转换格式可以在php之中做转换就好。
框架会对数据进行格式化操作,既然框架不合适那就原生就好了,要了解所以然就要去看框架的源码了