首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在表中选择日期介于同一表中另一行中的两个日期之间的行。

问在表中选择日期介于同一表中另一行中的两个日期之间的行。
EN

Stack Overflow用户
提问于 2018-05-18 17:05:25
回答 1查看 96关注 0票数 0

我想选择表中的某一行,其中日期介于同一表中另一行的开始日期和结束日期之间。我的桌子就是这样的。

代码语言:javascript
复制
============================================================================================
id         newid             start                 end                    date
-------------------------------------------------------------------------------------------
1             -            25/01/2018           26/02/2018            25/01/2018 
2            1            27/01/2018           27/01/2018            27/01/2018
3            1            05/02/2018           05/02/2018            05/02/2018
4            1            27/02/2018           27/02/2018            27/02/2018
============================================================================================

我创建函数来通过id调用结果。

代码语言:javascript
复制
function get($id){
global $wpdb;
$table_name = $wpdb->prefix ."myTable";
$sql = $wpdb->get_results("SELECT * FROM  $table_name WHERE id='{$id}'");
return $sql;
}

我希望$sql在$id开始日期和结束日期之间返回结果,方法是使用mysql,而不是使用php。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 17:18:44

您可以使用以下SELECT

代码语言:javascript
复制
SELECT * 
FROM table_name t1 
WHERE EXISTS (
    SELECT * 
    FROM table_name t2 
    WHERE t1.date >= t2.start 
        AND t1.date <= t2.end 
        AND t1.id <> t2.id
)

演示: http://sqlfiddle.com/#!9/b197a4/4/1

现在您可以使用以下PHP函数(get):

代码语言:javascript
复制
function get($id) {
    global $wpdb;
    $table_name = $wpdb->prefix ."myTable";
    $sql = $wpdb->get_results("SELECT * FROM $table_name t1 WHERE id = '$id' AND EXISTS (SELECT * FROM $table_name t2 WHERE t1.`date` >= t2.`start` AND t1.`date` <= t2.`end` AND t1.`id` <> t2.`id`)");
    return $sql;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50416181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档