想要仅将时间戳中的年份保存在数据库中

时间:2019-02-06 06:55:49

标签: php sql codeigniter phpmyadmin

我想在数据库中仅将类型date_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:00

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

问题是您的约会日期是

$registered_year2 =". $registered_year .-00-00 00:00:00"; 

看看是否$registered_year=2019上有. 2019 .-00-00 00:00:00并带有点。您的混合级联与插值。而且MySQL日期时间无法将其识别为有效日期。

  

例如,我选择了2018,然后我想将其保存为2018-00-00 00:00:00

请确保2018-00-00 00:00:00不是. 2019 .-00-00 00:00:00

这是一个简单的错字。

更多

2018-00-00 00:00:00不是有效日期。这样就行不通了。但是让我们看一下:

  

只想在类型为currenttimestamp的数据库date_created中保存年份

Datetime不是时间戳记。而且,如果您需要日期时间字段中的年份,则可以在查询的选择位置和查询位置使用YEAR(datetime_field)

如果需要时间戳,可以将时间戳转换为DateTime

   YEAR(FROM_UNIXTIME(timestamp_field))

因此,即使我更喜欢在PHP中执行此操作,但如果保存当前日期时间(NOW()),因为DB具有与PHP分开的自己的时区设置。然后,当您需要年份时,您就可以这样做。

干杯。

答案 1 :(得分:0)

有两件事需要解决。根据ArtisticPhoenix答案排名第一

$registered_year2 = $registered_year . "-00-00 00:00:00";

确保日期为2018-00-00 00:00:00

另一件事是将您的字段类型timestamp更改为datetime