-1

我想检查两个日期是否相等,它的$query_array['datepicker']absensi_tanggal。他们有不同的格式,所以我CONVERTabsensi_tanggal.

SQL 会自动转换日期吗?我试图不转换它,但查询不起作用,它总是返回 0 行。

所以我尝试了这段代码,但它不起作用。

$q = $this->db->select('*', 'CONVERT(VARCHAR(10), absensi_tanggal, 101) AS temp')->from('msabsensi')->limit($limit, $offset)
             ->join('msumat', 'msabsensi.umat_id = msumat.umat_id')
             ->join('mskelas', 'mskelas.kelas_id = msumat.kelas_id');

$q->where('CONVERT(VARCHAR(10), absensi_tanggal, 101)', $query_array['datepicker']);
$result['rows'] = $q->get()->result();

这是我得到的错误(我认为CONVERT AS我所做的select()不起作用):

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(10), absensi_tanggal, 101) '04/01/2013' LIMIT 10' at line 5

SELECT * FROM (`msabsensi`) JOIN `msumat` ON `msabsensi`.`umat_id` = `msumat`.`umat_id` JOIN `mskelas` ON `mskelas`.`kelas_id` = `msumat`.`kelas_id` WHERE CONVERT(VARCHAR(10), absensi_tanggal, 101) '04/01/2013' LIMIT 10

Filename: C:\xampp\htdocs\ci_gabdb\system\database\DB_driver.php

Line Number: 330

任何帮助表示赞赏,谢谢:D

4

1 回答 1

1

问题是它temp没有用作此查询中任何列的别名,并且您在 where 子句中引用它

$this->db->select('*')
->from('msabsensi')->limit($limit, $offset)
->join('msumat', 'msabsensi.umat_id = msumat.umat_id')
->join('mskelas', 'mskelas.kelas_id = msumat.kelas_id')
//->where('temp = '.$query_array['datepicker']) // here
->where('absensi_tanggal = DATE_FORMAT( STR_TO_DATE(  "' .$query_array['datepicker'] . '",  \'%m/%d/%Y\' ) ,  \'%Y-%m-%d\' )') 
->get()->num_rows();

编辑

检查别名问题

在 MySQL 查询的 WHERE 子句中使用列别名会产生错误

于 2013-05-11T04:53:07.930 回答