如何在codeigniter的当前日期插入天间隔?

Posted

技术标签:

【中文标题】如何在codeigniter的当前日期插入天间隔?【英文标题】:How to insert day interval in current date in codeigniter? 【发布时间】:2015-02-09 20:37:32 【问题描述】:

我需要在表格中添加开始日期和结束日期。所以 startdate 应该是当前日期,而结束日期应该是从当前日期起 30 天之后。我尝试按以下方式执行此操作,但未在表中插入记录。

 public function insert_details()
      $data = array(
        'tran_id' => $transaction_id,               
         'start_date' => CURDATE(),
         'end_date' => DATE_ADD(CURDATE() + INTERVAL 30 DAY)             
       );    
  $this->db->insert('user_payments', $data);
   return $this->db->insert_id();
 

【问题讨论】:

我认为你不能这样做,因为活动记录会转义值。 【参考方案1】:

因为,

DATE_ADD(CURDATE() + INTERVAL 30 DAY) are mysql functions,

您将它们视为 php 函数。

将它们作为字符串传递给 MySQL。

更改为:

'end_date' => "DATE_ADD(CURDATE() + INTERVAL 30 DAY)"

【讨论】:

在进行上述更改后,它会在两个字段中插入此值 0000-00-00【参考方案2】:

如果要查询MySql函数,可以使用$this->db->set()方法

public function insert_details()
  $this->db->set('tran_id', $transaction_id);
  $this->db->set('start_date', 'CURDATE()', false);
  $this->db->set('end_date', 'DATE_ADD(CURDATE() + INTERVAL 30 DAY)', false);

  $this->db->insert('user_payments');
   return $this->db->insert_id();
 

【讨论】:

现在它显示此错误:错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '))' 附近使用正确的语法 echo $this->db-> last_query(); 插入函数后显示查询的函数【参考方案3】:

试试这个

date('Y-m-d', strtotime(date('Y-m-d'). " + 30 days"));

【讨论】:

以上是关于如何在codeigniter的当前日期插入天间隔?的主要内容,如果未能解决你的问题,请参考以下文章

delphi中如何实现一个日期之间的间隔多少天?

请问两个时间点之间的间隔怎么算?

如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?

如何项sql数据库中添加一年的日期

日期间隔过滤器

Eloquent - 按“从日期”到“至今”分组,间隔为 1 天