只想从数据库中的时间戳中保存年份

Posted

技术标签:

【中文标题】只想从数据库中的时间戳中保存年份【英文标题】: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 带点。您的混合串联与插值。 【参考方案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

【讨论】:

以上是关于只想从数据库中的时间戳中保存年份的主要内容,如果未能解决你的问题,请参考以下文章

如何通过时间戳排序从时间戳中获取月份和年份的唯一记录

如何在sequelize ORM中使用从时间戳中选择并提取日期到月份和年份?

是否有任何独特的 SQL 函数可以从时间戳中仅检索年份和月份,并且基于该结果我需要找出最早制作的

从 SQL 中的时间戳中提取时间

从 MYSQL 上的时间戳中提取日/月/年

如何从Django中的时间戳中仅提取一天