在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的集合的所有记录。
1条答案
按热度按时间vddsk6oq1#
我没有试过,但可能是这样的: