- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们使用 Yii 框架并创建了一个搜索表单以包含以下 DatePicker 小部件:
<?php echo $form->labelEx($model, 'availability_start_date');?>
<?php
Yii::import('zii.widgets.jui.CJuiDatePicker');
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name'=>'stattDate',
'options'=>array(
'showAnim'=>'fold',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
)
));
?>
此小部件需要用于搜索 availability_start_date 与上述小部件中指定的值相差 +/- 2 天的用户。
我们的 UserController 具有以下连接逻辑:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= 'AND usd.availability_start_date >= '.$search_frm
['availability_start_date'];
}
目前 WHERE 子句中的逻辑只要求匹配 availability_start_date 大于或等于小部件的值。
如何修改上述 WHERE 子句以选择小部件值与 availability_start_date 值相差 +/- 2 天的记录?
更新:我修改了 where 子句如下:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= ' AND usd.availability_start_date >= DATE_ADD('.$search_frm.',
INTERVAL -2 DAY)
AND usd.availability_start_date <= DATE_ADD(' .$search_frm.', INTERVAL 2 DAY)';
}
不幸的是,当我测试逻辑时,返回的记录不符合此条件。表单或页面上不会抛出任何错误。
最佳答案
DATEDIFF()
返回以天为单位的值。对于 +/- 2 天,您需要使用绝对值 ABS()
由 DATEDIFF()
返回, 验证它是 <= 2
.
$where .= "AND ABS(DATEDIFF(DATE(usd.availability_start_date), DATE('" . $search_frm['availability_start_date'] . "'))) <= 2";
我还将参数包装到 DATEDIFF()
在DATE()
截断时间部分(如果存在)。如果您的应用程序不需要它们,请将其删除。
关于php - Where子句中的MySQL DateDiff?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783347/
我想使用sql查询数据库以显示id 1,2,3等之间的时间差异。基本上它会比较其下面的行的所有记录。任何帮助,将不胜感激。 IDCODE DATE TIME DIFFERENCE (M
SQL服务器: DECLARE @Date1 DATETIME SET @Date1 = '2012-26-12 12:00:05 AM' DECLARE @Date2 DATETIME SET @D
SQL服务器: DECLARE @Date1 DATETIME SET @Date1 = '2012-26-12 12:00:05 AM' DECLARE @Date2 DATETIME SET @D
我正在尝试执行我认为是简单的日期差异函数的操作,但是由于某种原因,我的单位值被读取为列(“dd”),因此我一直在获取列,但无法解决错误 我正在使用AWS Athena 我的代码是这样 SELECT "
我有一个包含日期列(开始日期、结束日期)的表格,我想计算这些日期之间的差异并按月分组。 我可以在几天内得到 datediff,但我不知道如何在月内对它进行分组,有什么建议吗? Table: id
我在我的 mongoDB 中有一个集合,它存储提供给客户的服务以及他们的电子邮件地址,如下所示 { "_id" : ObjectId("56a84627f8fd4a136c0e944a"),
我们想计算两个 DateTimeOffset 之间的差异,但是,SQL 返回了错误的值,我们做错了什么? DECLARE @timeInZone1 AS DATETIMEOFFSET DECLARE
我需要计算两个日期之间的 DateDiff(小时),但仅限于工作时间(8:30 - 16:00,没有周末)。然后,按照下面的示例,此结果将放入 Reaction_Time 列中。 ID 日期 reac
我有一个名为 member 的 SQL 表,其中有成员信息以及他们的出生日期。 我需要列出所有 25 岁以上的人。现在,我得到了这个: SELECT * FROM members WHERE DATE
我在我们的旧代码中找到了一个地方,原来的程序员试图计算一个员工是否被雇用了一定年限。计算使用的是受雇日期与今天之间的天数差除以 364。这对我来说没有意义,所以我将其更改为年差。这似乎也给出了错误的答
我在这里在 CF 中解决了一个难题。 您有一个时间戳作为参数传递给服务器。例如 2012-5-10 14:55 . 如果从给定的时间过去了 30 秒,您将如何查看并返回 true或 false ? 规
我正在运行一个简单的 DATEDIFF 查询,但它似乎没有正确计算天数,或者我做错了什么。 如果我跑 PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01) RETUR
我在将分钟转换为小数时遇到了一些问题,即使我已经查看了 SO 的其他回复。 select cast(datediff(minute, min(start_time), min(complete_tim
我需要从 SQL Server 数据库向下游传递一个值,这本质上是两个 时间戳 之间的差异。使用 DATEDIFF 函数就足够简单了。 SELECT DATEDIFF(day, '2015-11-06
有人知道为什么以下返回 8 吗?我预计 8 小时 30 分钟,还是 8.5? declare @start_day datetime; declare @end_day datetime; decla
我想获取相对于当前日期的上个月 SELECT datediff(mm,-1,2-2-2011) 此查询给出67,这是一个错误的值..我哪里出错了? 最佳答案 您可以使用DATEADD 例如。 SELE
我在使用 PHP DateDiff 时遇到问题,我不明白为什么每个时区返回不同的结果,例如在本例中布拉格返回 0 个月,而美国返回 1 个月。 这有什么区别以及我如何按预期返回 1 个月(而不是 30
我有一个名为 date1 的变量,其中包含使用 parseDateTime 生成的 ColdFusion 日期/时间对象。当我转储变量时,我得到 {ts '2014-12-20 15:46:57'}。
我有一个 Excel 文件,它会在添加条目时自动为其添加时间戳。我想要一个脚本来查找第一个条目和最后一个条目之间的时间差(以分钟为单位)。这是我到目前为止所想到的。 Sub Duration() Di
我正在使用 SQL Server我需要知道患者接受治疗的天数。问题是我只能得到 startDate 而不能得到 endDate当我运行查询并按 StartDate 排序时,我得到如下内容: Start
我是一名优秀的程序员,十分优秀!