将timestamp列中的值截断为仅日期部分,从而删除Doctrine 1.2中的时间

时间:2015-02-16 02:15:41

标签: php mysql symfony1 doctrine-1.2

我想比较两个日期,如果一对多关系中的列中已存在相同日期,则不应在Mysql中保存用户输入日期。我的问题是,日期列是时间戳类型,因此有两个相同的日期有不同的时间,它仍然会保存在数据库中,因为它们仍然是'不同的值',如'2004-13-12 8:00:00'与'2014-13-12 8:07不同: 08'。我可以在Mysql中做到这一点

SELECT date_created 
FROM koleks
WHERE 
-- Truncate the datetime to a date only
DATE(date_created) = '2014-03-12'
AND id = 3942

我在学说中尝试但我没有成功。

public function getDateCreate($date,$id) {
    //$date =date('Y-m-d H:i:s',strtotime('2014-03-12 8:00:00'));this will 
   // $id = 3942;//work
    $q = $this->createQuery('k')
                ->select('k.date_created')
                ->addSelect('k.loan_id')
                ->from('Koleks k')
                ->innerJoin('k.Loans l')
                ->andWhere('k.date_created=?',$date)
                ->andWhere('k.loan_id=?',$id);
               return $q->execute();

//动作

  $dateOfPayment = '2014-01-10';
  $ids = 1234;
  $duplicates = Doctrine_Core::getTable('Koleks')->getDateCreate($dateOfPayment,$id);
                        if (count($duplicates) > 0) {
                           $this->fieldErrors['date_of_payment_'.$loan['id']] = 'Error Duplicate date.';
                        }
                       else {
                             //code to save in database;
                        }

任何想法?如果两个日期值的日期部分具有相同的值,无论其时间(小时,分钟,秒)如何,我都想抛出错误。

2 个答案:

答案 0 :(得分:1)

Doctrine很乐意接受dql中的DATE()函数:

->andWhere('DATE(k.date_created) = ?', $date)

答案 1 :(得分:0)

在MySQL中,您可以使用DATE()函数删除DATETIME的时间部分。