php 时间选择,PHP-在学说2中的日期之间选择条目
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中的日期之间选择条目相关推荐
- java中怎么通过日期算出天数_讲解对于Java中如何计算日期之间的天数知识
在Java之中用Calendar方法,我们可以容易的实现日期相关的计算: public class TestDate { public static void main(String[] args) ...
- 有关oracle数据库中的日期显示问题
公司的系统使用的tomcat+jsp+oracle,目前来说系统运行还是很正常的.现在有一个问题就是系统在批量导入excel表格时有关日期的问题出现了. 这个系统支持的日期格式是1999-08-08, ...
- 【转】C/C++中的日期和时间
头文件 time.h 函数用途 函数名 得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 得到以ASCII码表示的时间 asctime 得到字符串表 ...
- java中separator_java - File.separator和路径中的斜杠之间的区别
java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...
- php中年月日用什么参数,PHP中date()日期函数参数整理
PHP中date()日期函数参数整理 发布于 2014-11-19 13:34:06 | 105 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...
如何应用Win10系统电脑中的计算器计算两个日期之间的天数? 相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍 ...
- POI处理Excel中的日期数据类型
在POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理. 正确的处理方法是先判断单元格 的类型是否则NUMERIC类型, 然后再判断单元格是 ...
- C++中的日期和时间
1.C++中的时间和日期 C++标准库没有提供所谓的日期类型,C++继承了C语言用于日期和时间操作的结构和函数.为了使用日期和时间相关的函数和结构,需要在C++程序中引用"ctime&quo ...
- pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row)
pandas使用max函数和min函数计算dataframe日期(时间)数据列中最大日期和最小日期对应的数据行(maximum and minimum date or time row in data ...
最新文章
- cython安装、使用
- 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
- Py之PyWapFetion:PyWapFetion的简介、安装、使用方法之详细攻略
- 使用Arcgis进行画面(线)并计算大小(长度)。
- mysql --explicit_【MySQL】 explicit_defaults_for_timestamp 参数解析
- java添加事件监听器_Java事件监听器的四种实现方式
- DAO基本登录(1)
- 面试官:这货一听就是一个水货...
- 猿创征文 | 国产数据库之人大金仓数据库详解安装和使用
- ubuntu 测试硬盘读写速度
- Delta并联机构运动学分析
- itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐
- 凸包(convex hull),凸包络面(convex envelope), 凸低估计量(convex underestimator), 图上方(epigraph),
- golang 实现HTTP代理和反向代理
- 【STM32】时钟系统及其结构原理
- 独立开发仿造一个开关机器人
- lol网通区服务器的位置,LOL英雄联盟转区系统地址在哪?
- LOGO设计辅助图形的人性化设计
- SQL获取某月第一天或最后一天
- Eclipse中格式化JS、HTML代码
热门文章
- 【渝粤教育】国家开放大学2018年春季 8625-22T老年心理健康 参考试题
- 【渝粤题库】国家开放大学2021春2508学前儿童语言教育题目
- zigbee物联网模块标准:LTE标准Cat.1和nbiot无线通信模块差异
- pandas 遍历并修改_Pandas循环提速7万多倍!Python数据分析攻略
- 最小/大加代数(Min/max-Plus Algebra)
- linux shm_open,c – 如何更改shm_open路径?
- python生成矩阵_如何在Python中生成矩阵?
- ubuntu16.04+cuda9.0_cudnn7.5+tensorflow-gpu==1.12.0
- php 常用的知识点归集(下)
- 自定义相册、九宫格显示图片