gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:43:50 26 4
gpt4 key购买 nike

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

$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' 的日期,而错过了实际上为 null 的日期;和 2) 我知道“0000-00-00”并不总是等于“0000-00-00”;即使我的专栏是 DATE 类型,$qb->expr()->eq( ...) 语法也可能必须包含 TIME 字符 (00:00:00)。

如果 Doctrine 有类似 notWhere 的东西就好了:

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

因为它不是查找日期不为 NULL 的所有记录,而是查找我要查找的内容:不属于日期“为”NULL 的集合的所有记录。

最佳答案

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

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

关于mysql - 在Doctrine和mySql中,如何查询没有日期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50384868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com