从特定的 sql 范围获取
Posted
技术标签:
【中文标题】从特定的 sql 范围获取【英文标题】:Get from certain sql range 【发布时间】:2021-03-30 08:54:39 【问题描述】:我有以下video
表:
create table videos(
title text,
date_range text);
insert into videos(title, date_range) values
('Title1', '["2021-03-18 - 2021-03-20", "2021-03-01 - 2021-03-05", "2021-03-15"]'),
('Title2', '["2021-02-12 - 2021-02-13", "2021-02-02 - 2021-02-06","2021-02-10"]');
+--------+----------------------------------------------------------------------+
| title | date_range |
+--------+----------------------------------------------------------------------+
| Title1 | ["2021-03-18 - 2021-03-20", "2021-03-01 - 2021-03-05", "2021-03-15"] |
| Title2 | ["2021-02-12 - 2021-02-13", "2021-02-02 - 2021-02-06","2021-02-10"] |
+--------+----------------------------------------------------------------------+
如何从2021-03-18 - 2021-03-19
获取视频?
所以结果表应该是这样的:
+--------+----------------------------------------------------------------------+
| title | date_range |
+--------+----------------------------------------------------------------------+
| Title1 | ["2021-03-18 - 2021-03-20", "2021-03-01 - 2021-03-05", "2021-03-15"] |
+--------+----------------------------------------------------------------------+
这里有 fiddle 和这张表,但没有结果,因为我不知道如何实现这一点。 提前致谢!
【问题讨论】:
考虑规范化你的架构 【参考方案1】:规范化的模式可能如下所示:
id title date_range_start date_range_end
1 Title1 2021-03-18 2021-03-20
2 Title1 2021-03-01 2021-03-05
3 Title1 2021-03-15 2021-03-15
4 Title2 2021-02-12 2021-02-13
5 Title2 2021-02-02 2021-02-06
6 Title2 2021-02-10 2021-02-10
【讨论】:
我不想那样做,有没有办法在不规范化架构的情况下做到这一点? 草莓就在这里。如果您希望能够进行过时的查询,则必须规范他的做法。您还可以有一个表,其中的标题链接到一个日期范围表来实现相同的目的。无论如何,您的架构不适合日期查询。 在我看来,您有两个选择: 1. 规范化您的架构。 2. 不要为 RDBMS 烦恼以上是关于从特定的 sql 范围获取的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server - 在按特定列分组时构建动态范围的数字
我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围