【问题标题】:Want to save only year from timestamp in database只想从数据库中的时间戳中保存年份
【发布时间】:2019-06-30 01:59:02
【问题描述】:

我只想在我的数据库中将年份保存为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

似乎是什么问题?

【问题讨论】:

  • 它应该像 $registered_year2 = $registered_year 。 “-00-00 00:00:00”;在插入之前打印一年到 db 的问题。
  • 你有没有试过检查$this->input->post('registered_year')是否有价值?
  • 为什么不将此实体的数据类型更改为datetime(),而不是手动生成日期和时间?
  • @DevsiOdedra 它仍然保存 0000-00-00 但registered_year2 的值是 2010-00-00 00:00:00。顺便说一句,我的 date_created 类型是 currenttimestamp。
  • 问题是你的日期是$registered_year2 =". $registered_year .-00-00 00:00:00"; 或者如果$registered_year=2019 那么你有.2019.-00-00 00:00:00 带点。您的混合串联与插值。

标签: php sql codeigniter phpmyadmin


【解决方案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 不是有效日期。所以那行不通。但是让我们看看这个:

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

日期时间不是时间戳。如果您需要日期时间字段中的年份,您可以在查询的 select 和 where 部分中使用 YEAR(datetime_field)

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

   YEAR(FROM_UNIXTIME(timestamp_field))

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

干杯。

【讨论】:

  • 知道了,伙计。然后我将类型从时间戳更改为日期时间。谢谢老哥
  • 您可以使用时间戳或日期时间之一,它们在某些情况下都有优势。对于创建时间,我可能会使用日期时间,只是因为它更容易阅读...... lol
【解决方案2】:

有两件事需要改变。根据 ArtisticPhoenix 的回答,排名第一

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

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

另一件事是将您的字段 typetimestamp 更改为 datetime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多