PHP-在学说2中的日期之间选择条目

我将因这个无法修复的最小错误而发疯。 我想在两天之间选择条目,下面的示例说明了我所有的失败:

选择1。

$qb->where('e.fecha > ' . $monday->format('Y-m-d'));

$qb->andWhere('e.fecha < ' . $sunday->format('Y-m-d'));

结果(0个条目):

SELECT r0_.id_reservacion AS id_reservacion0, r0_.fecha AS fecha1, r0_.cliente AS cliente2

FROM reservacion r0_

WHERE (r0_.fecha > 2012 - 07 - 16) AND (r0_.fecha < 2012 - 07 - 22)

选择2

$qb->add('where', 'e.fecha between 2012-01-01 and 2012-10-10');

结果(0个条目):

SELECT r0_.id_reservacion AS id_reservacion0, r0_.fecha AS fecha1, r0_.cliente AS cliente2

FROM reservacion r0_ WHERE r0_.fecha

BETWEEN 2012 - 01 - 01 AND 2012 - 10 - 10

这是我带有当前条目的表:

id fecha cliente

1 2012-07-16 00:00:00 2

2 2012-07-16 13:00:00 4

3 2012-07-22 23:00:00 4

编辑1

为了评估sql以免产生疑问,我运行了以下查询:

$qb->where('e.fecha > ' . $sunday->format('Y-m-d'));

结果(3个条目):

SELECT r0_.id_reservacion AS id_reservacion0, r0_.fecha AS fecha1, r0_.cliente AS cliente2

因此,看起来不是sql的问题。     从保留r0_     在r0_.fecha> 2012-07

4个解决方案

137 votes

您可以…

$qb->where('e.fecha BETWEEN :monday AND :sunday')

->setParameter('monday', $monday->format('Y-m-d'))

->setParameter('sunday', $sunday->format('Y-m-d'));

要么…

$qb->where('e.fecha > :monday')

->andWhere('e.fecha < :sunday')

->setParameter('monday', $monday->format('Y-m-d'))

->setParameter('sunday', $sunday->format('Y-m-d'));

MacDada answered 2020-02-06T14:24:25Z

32 votes

我相信这样做的正确方法是使用查询生成器表达式:

$now = new DateTime();

$thirtyDaysAgo = $now->sub(new \DateInterval("P30D"));

$qb->select('e')

->from('Entity','e')

->add('where', $qb->expr()->between(

'e.datefield',

':from',

':to'

)

)

->setParameters(array('from' => $thirtyDaysAgo, 'to' => $now));

[http://docs.doctrine-project.org/en/latest/reference/query-builder.html#the-expr-class]

编辑:此方法相对于此处任何其他答案的优点是它独立于数据库软件-您应该让Doctrine处理日期类型,因为它具有处理此类问题的抽象层。

例如,如果执行类似以'Y-m-d'形式添加字符串变量的操作,则该变量在转到MySQL以外的数据库平台时会中断。

Harry Mustoe-Playfair answered 2020-02-06T14:25:00Z

3 votes

编辑:请参阅其他答案以获得更好的解决方案

我提供的原始新手方法是(opt1):

$qb->where("e.fecha > '" . $monday->format('Y-m-d') . "'");

$qb->andWhere("e.fecha < '" . $sunday->format('Y-m-d') . "'");

和(opt2):

$qb->add('where', "e.fecha between '2012-01-01' and '2012-10-10'");

这样既快捷又容易,使原始海报立即生效。

因此,可以接受的答案。

根据评论,这是一个错误的答案,但这是一个容易犯的错误,因此,我将其作为“不可以做的事”留在这里。

azhrei answered 2020-02-06T14:25:42Z

1 votes

看看如何在参数中格式化日期$ jour。这取决于您使用的是expr()-> like还是expr()-> lte

$qb

->select('e')

->from('LdbPlanningBundle:EventEntity', 'e')

->where(

$qb->expr()->andX(

$qb->expr()->orX(

$qb->expr()->like('e.start', ':jour1'),

$qb->expr()->like('e.end', ':jour1'),

$qb->expr()->andX(

$qb->expr()->lte('e.start', ':jour2'),

$qb->expr()->gte('e.end', ':jour2')

)

),

$qb->expr()->eq('e.user', ':user')

)

)

->andWhere('e.user = :user ')

->setParameter('user', $user)

->setParameter('jour1', '%'.$jour->format('Y-m-d').'%')

->setParameter('jour2', $jour->format('Y-m-d'))

->getQuery()

->getArrayResult()

;

Laurent Lolo answered 2020-02-06T14:26:02Z

php 时间选择,PHP-在学说2中的日期之间选择条目相关推荐

  1. java中怎么通过日期算出天数_讲解对于Java中如何计算日期之间的天数知识

    在Java之中用Calendar方法,我们可以容易的实现日期相关的计算: public class TestDate { public static void main(String[] args) ...

  2. 有关oracle数据库中的日期显示问题

    公司的系统使用的tomcat+jsp+oracle,目前来说系统运行还是很正常的.现在有一个问题就是系统在批量导入excel表格时有关日期的问题出现了. 这个系统支持的日期格式是1999-08-08, ...

  3. 【转】C/C++中的日期和时间

    头文件 time.h 函数用途 函数名 得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 得到以ASCII码表示的时间 asctime 得到字符串表 ...

  4. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  5. php中年月日用什么参数,PHP中date()日期函数参数整理

    PHP中date()日期函数参数整理 发布于 2014-11-19 13:34:06 | 105 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  6. 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...

    如何应用Win10系统电脑中的计算器计算两个日期之间的天数? 相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍 ...

  7. POI处理Excel中的日期数据类型

    在POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理. 正确的处理方法是先判断单元格 的类型是否则NUMERIC类型, 然后再判断单元格是 ...

  8. C++中的日期和时间

    1.C++中的时间和日期 C++标准库没有提供所谓的日期类型,C++继承了C语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在C++程序中引用"ctime&quo ...

  9. pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row)

    pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row in data ...

最新文章

  1. cython安装、使用
  2. 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
  3. Py之PyWapFetion:PyWapFetion的简介、安装、使用方法之详细攻略
  4. 使用Arcgis进行画面(线)并计算大小(长度)。
  5. mysql --explicit_【MySQL】 explicit_defaults_for_timestamp 参数解析
  6. java添加事件监听器_Java事件监听器的四种实现方式
  7. DAO基本登录(1)
  8. 面试官:这货一听就是一个水货...
  9. 猿创征文 | 国产数据库之人大金仓数据库详解安装和使用
  10. ubuntu 测试硬盘读写速度
  11. Delta并联机构运动学分析
  12. itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐
  13. 凸包(convex hull),凸包络面(convex envelope), 凸低估计量(convex underestimator), 图上方(epigraph),
  14. golang 实现HTTP代理和反向代理
  15. 【STM32】时钟系统及其结构原理
  16. 独立开发仿造一个开关机器人
  17. lol网通区服务器的位置,LOL英雄联盟转区系统地址在哪?
  18. LOGO设计辅助图形的人性化设计
  19. SQL获取某月第一天或最后一天
  20. Eclipse中格式化JS、HTML代码

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 8625-22T老年心理健康 参考试题
  2. 【渝粤题库】国家开放大学2021春2508学前儿童语言教育题目
  3. zigbee物联网模块标准:LTE标准Cat.1和nbiot无线通信模块差异
  4. pandas 遍历并修改_Pandas循环提速7万多倍!Python数据分析攻略
  5. 最小/大加代数(Min/max-Plus Algebra)
  6. linux shm_open,c – 如何更改shm_open路径?
  7. python生成矩阵_如何在Python中生成矩阵?
  8. ubuntu16.04+cuda9.0_cudnn7.5+tensorflow-gpu==1.12.0
  9. php 常用的知识点归集(下)
  10. 自定义相册、九宫格显示图片