首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQLite查询中去掉特定的大小写

如何在SQLite查询中去掉特定的大小写
EN

Stack Overflow用户
提问于 2012-09-13 10:15:16
回答 2查看 98关注 0票数 1

我在弄清楚这一点时遇到了问题。这是我的问题:

代码语言:javascript
复制
SELECT * FROM events WHERE date('2012-9-4') >= start_date AND 
date('2012-9-4') <= end_date

现在,正如您从上面看到的,我只以某种方式获取与当天匹配的行。在我的例子中,当天发生的任何事件或来自前几天的任何事件。问题是,假设前一天晚上10:00到早上12:00 (2012-9-3)有一个事件,第二天(2012-9-4)就会出现。所以我需要防止这样的情况发生。

这就是我遇到麻烦的地方。我不知道如何正确地完成它。我尝试过不同的方法,但都失败了。我需要一种方法来使where子句中的语句仅在end date > start dateend date == current dayend time == 00:00时运行。任何建议都是非常受欢迎的!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-13 10:33:22

您不是只需要修改where子句的第一部分吗

代码语言:javascript
复制
Where start_date >= date ('2012-9-4') and end_date <= date('2012-9-4')

假设您的数据的end_date总是晚于start_date (如果不是,则添加一个OR,反之亦然)。

如果,(在这里从Q中混淆)你实际上想要相交的日期(重叠),那么你需要两个相交的子句:

代码语言:javascript
复制
where (start_date >= date('2012-09-03 00:00:00') and start_date < date('2012-09-04 00:00:00')) or (end_date >= date('2012-09-03 00:00:00') and end_date < date('2012-09-04 00:00:00'))
票数 1
EN

Stack Overflow用户

发布于 2012-09-13 12:36:48

我终于弄明白了(非常确定)!

代码语言:javascript
复制
SELECT * FROM events WHERE date('2012-9-4') >= start_date AND 
date('2012-9-5') <= end_date AND datetime(end_date,end_time) != datetime(2012-9-5,'00:00')

经过两天的思考,我不知道为什么我从来没有想过要利用时间。我想我需要更多的数据库实践。在任何情况下,我添加的部分都会过滤按日期和时间列出的事件。例如,我的查询日期是4号晚上11:00到5号凌晨12:00。AND datetime(end_date,end_time) != datetime(2012-9-5,'00:00')实质上是说“只有在午夜时间不是结束日期时才输出”。它只会过滤掉5号,而不是4号,因为从技术上讲,午夜是另一天。这是我唯一想要过滤掉事件的情况,而不仅仅是在事件周期之间。我感谢Wolf5370的提示,这对我很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12398534

复制
相关文章

相似问题

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