只想从数据库中的时间戳中保存年份
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
另一件事是将您的字段 type 从 timestamp
更改为 datetime
【讨论】:
以上是关于只想从数据库中的时间戳中保存年份的主要内容,如果未能解决你的问题,请参考以下文章
如何在sequelize ORM中使用从时间戳中选择并提取日期到月份和年份?