在doctor和mysql中,如何查询没有日期的记录

vx6bjr1n  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(355)

在querybuilder中,我想查找日期字段没有实际日期的所有记录。不过,我发现 '0000-00-00' 是空的,也不是空的。换句话说,

$qb->select('t')
    ->from(myTable, 't')
    ->andWhere ... some condition...
    ->andWhere($qb->expr()->isNull('t.myDate'));

$qb->select('t')
    ->from(myTable, 't')
    ->andWhere ... some condition...
    ->andWhere($qb->expr()->isNotNull('t.myDate'));

两者都包括值 myDate'0000-00-00' .
我考虑过这样做,

$qb->select('t')
    ->from(myTable, 't')
    ->andWhere ... some condition...
    ->andWhere($qb->expr()->eq('t.myDate','?1'))
    ->setParameter(1, '0000-00-00');

但是1)只选取'0000-00-00'的日期,而忽略了实际为空的日期;2)我理解“0000-00-00”并不总是等于“0000-00-00”;即使我的列是日期类型,$qb->expr()->eq(…)语法可能必须包含时间字符(00:00:00)。
如果条令里有这样的东西,那就太酷了:

$qb->select('t')
    ->from(myTable, 't')
    ->andWhere ... some condition...
    ->butDefinitelyNotWhere($qb->expr()->isNull('t.myDate'));

因为它没有找到日期不为null的所有记录,而是找到了我要找的:不属于日期为null的集合的所有记录。

vddsk6oq

vddsk6oq1#

我没有试过,但可能是这样的:

->andWhere($qb->expr()->isNotNull('WEEK(t.myDate)'));

相关问题