只需要从日期获取年份和月份

Posted

技术标签:

【中文标题】只需要从日期获取年份和月份【英文标题】:Need to fetch only year and month from the date 【发布时间】:2017-06-25 17:02:44 【问题描述】:

这里我插入到表中的值如下,

`2017-01-01`,
`2017-01-02`,
`2017-01-03`,
`2017-01-04`,
`2017-01-05`,
`2017-01-06`. 

我只需要从中获取年份和月份, 为此,我使用了这样的代码

public function present_report_by_empid($user_id = null,$date = null) 
 

    $query='tbl_attendance.date_in';
    $this->db->where('tbl_attendance.attendance_status', 1);
    $this->db->where('tbl_attendance.user_id', $user_id);
    $this->db->where(date('Y-m',strtotime($query)), $date);

    return $this->db->count_all_results('tbl_attendance');

我的 $date 值是2017-01,当我这样给出时,我得到这样的错误 SELECT COUNT(*) ASnumrowsFROMtbl_attendanceWHEREtbl_attendance.attendance_status= 1 ANDtbl_attendance.user_id= '1' AND1970-01= '2017-01'

【问题讨论】:

请发布您遇到的错误 表格中的日期列名是什么? 看到我已经发布了.. date_in ?你在说什么? yaa...当然date_in 【参考方案1】:

我相信你有错误

$this->db->where(date('Y-m',strtotime($query)), $date);

用值检查值,

现在用这个替换你的函数,

public function present_report_by_empid($user_id = null,$date = null) 
 
    $temp = explode("-",$date);
    $query='tbl_attendance.date_in';
    $this->db->where('tbl_attendance.attendance_status', 1);
    $this->db->where('tbl_attendance.user_id', $user_id);
    $this->db->where("YEAR(tbl_attendance.date_in)",$temp[0]);
    $this->db->where("MONTH(tbl_attendance.date_in)",$temp[1]);
    return $this->db->count_all_results('tbl_attendance');

试一试,会成功的。

【讨论】:

【参考方案2】:

首先您需要将日期解析为Y-m格式,然后您可以将此列用作条件

public function present_report_by_empid($user_id = null,$date = null) 
 

    $query='tbl_attendance.date_in';
    $this->db->select('tbl_attendance.*,DATE_FORMAT(tbl_attendance.date_in,"%Y-%m") as date_parse');
    $this->db->where('tbl_attendance.attendance_status', 1);
    $this->db->where('tbl_attendance.user_id', $user_id);
    $this->db->where('date_parse',date('Y-m',strtotime($date)));

    return $this->db->count_all_results('tbl_attendance');

【讨论】:

如果在运行此代码时出现任何错误,请告诉我。我会修复它 列名是 date_in 而不是 date_parse 并且它仍然不起作用,因为日期格式是表字段的 Y-m-d 是的,我知道日期列 tbl_attendance.date_in 我在做什么我正在将数据库日期 Ymd 格式化为 Ym 并存储在虚拟列 date_parse 中,然后在该列上设置条件 尝试使用$this->db->last_query() 调试您从代码中获取的查询并在此处发布 伙计,我不是 OP :D

以上是关于只需要从日期获取年份和月份的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 日期时间选择器 - 只需要选择月份和年份

Wp查询日期之间的帖子,但任何年份

需要从redshift中的日期列中划分月份和年份

如何从日期获取月份和年份

sql 从日期开始获取月份和年份

SQL查询以获取特定年份的当前日期(考虑月份和日期)的数据