Php 希望仅从数据库中的时间戳中保存年份
我只想在我的数据库中将年份保存为Php 希望仅从数据库中的时间戳中保存年份,php,sql,codeigniter,phpmyadmin,Php,Sql,Codeigniter,Phpmyadmin,我只想在我的数据库中将年份保存为date\u created,类型为currenttimestamp 我从selecthtml中获取年度值。 得到值后,我将把它传输到控制器 这是我的密码 $registered_year = sanitize($this->input->post('registered_year')); $registered_year2 =". $registered_year .-00-00 00:00:00"; $app_type = 1; $ref_no =
date\u created
,类型为currenttimestamp
我从select
html中获取年度值。
得到值后,我将把它传输到控制器
这是我的密码
$registered_year = sanitize($this->input->post('registered_year'));
$registered_year2 =". $registered_year .-00-00 00:00:00";
$app_type = 1;
$ref_no = generate_reference_number();
$this->Model->dealer_renew_save($account_id,$req_id,$ref_no,$app_type,$registered_year2);
$data = [
'success'=>1,
'message'=> 'Application Successfully Renewed.'
];
generate_json($data);
例如,我选择了2018
,然后我希望它保存2018-00-00 00:00:00
它保存0000-00-00:00:00
有什么问题吗?问题是你的约会对象是这个吗
$registered_year2 =". $registered_year .-00-00 00:00:00";
如果$registered\u year=2019
,则您拥有。2019-00-00:00:00
带点。你的混合串联与插值。MySQL日期时间不将其识别为有效日期
例如,我选择2018,然后我想保存它2018-00-00:00:00
可以肯定的是,2018-00-00:00:00
不是。2019年-00-00:00:00
这是一个简单的打字错误
进一步
2018-00-00:00:00
不是有效日期。所以那是行不通的。但让我们看看这个:
只想将年份保存在我的数据库中使用currenttimestamp类型创建的日期\u
Datetime不是时间戳。如果需要datetime字段中的年份,可以在查询的select和where部分使用year(datetime\u字段)
如果需要时间戳,可以将时间戳转换为日期时间
YEAR(FROM_UNIXTIME(timestamp_field))
因此,如果您保存当前日期时间(NOW()),尽管我更喜欢在PHP中这样做,因为DB有自己的时区设置,与PHP不同。那你就可以在你需要的时候这么做
干杯。有两件事需要改变。第一,根据回答
$registered_year2 = $registered_year . "-00-00 00:00:00";
确保日期为2018-00-00:00:00
另一件事是将您的字段类型从
时间戳
更改为日期时间
它应该是$registed\u year2=$registed\u year。"-00-00 00:00:00"; 插入前将年份传递给db时出现问题。是否尝试检查$this->input->post('registered_year')
是否有值?为什么不将此实体的数据类型更改为datetime()
它没有生成手动日期和时间?@DevsiOdedra它仍然保存0000-00-00,但注册年份2的值是2010-00-00:00:00。顺便说一句,我创建的日期类型是currenttimestamp。问题是您的日期是这$registered\u year2=“.$registered\u year.-00-00:00:00”代码>或者如果$registered\u year=2019
则您有带点的.2019.-00-00:00:00
。你的混合连接和插值。明白了,伙计。然后我将类型从timestamp更改为datetime。谢谢,您可以使用其中一种,时间戳或日期时间,它们在某些情况下都有优势。对于created at,我可能会使用datetime,因为它更容易阅读。。。英雄联盟