日期类型数据如何写入数据库

需求:用户选择一个开始日期,输入一个时间间隔(以年为单位),程序计算出结束日期,将数据写入数据库

代码如下:

$fyear = $_post[‘fyear’]; //时间间隔

$date_start = $_post[‘stardate’]; //开始日期,为2016-03-21的格式

$date_start1 = date_create($date_start); //转化为日期类型数据,下面要用到。这是查了资料看的,不知道是不是需要这样

$date_end = date_add($date_start1,date_interval_create_from_date_string($fyear . ” years”));

//计算结束日期

$sql = “insert into 表名 (fyear,date_start,date_end) values (” . $fyear . “,'” . $date_start . “‘,'” . $date_end . “‘)”;

语名不能执行,显示错误意思是不能将datetime类数据转化为符串

新人不知如何修改,请指点

回复讨论(解决方案)

贴出错误信息以供分析

错误提示为

catchable fatal error: object of class datetime could not be converted to string

错误行数就是这条sql语句,在程序中语句未执行,就是说构建这条sql语句是就出错了

好像是说日期类的实例不能转换为字符串,猜测是实例不能和字符串连在一起

但不知怎么修改

请指点

会不会是数据库字段类型有问题?

楼上,在程序 中没有执行sql语句,只是先写出了sql语句,所以应该和数据库没有什么关系

$_post[‘stardate’]; 这个是什么样子的?

直接弄成string 就可以存啊

或者转成规定的日期型date(“y-m-d”,$str), 在数据库里选date类型

楼上

$_post[‘stardate’] 这个是在提交页用了一个日期控件,选择后在输入框自动显示日期,是2016-03-03这样的格式

把这个弄成日期类型主要是为了计算加一个时间间隔后的结束日期,用到了date_add这个函数

date_add这个函数好像是要求用到日期型参数

借鉴一下这个,,你的 $date_end 打印一下看看是什么结果 应该是date_time对象

Posted in 未分类

发表评论