我有两个约会:
10-11-2010 and 17-11-2010
Run Code Online (Sandbox Code Playgroud)
现在我想选择所有具有这两者之间日期的行.
我怎样才能做到这一点?
我试图在日期格式中选择时间戳表中的所有记录2011-08-01-
12:00:00
使用以下代码:
SELECT f.`fly_reg`, RIGHT(f.`start_tid`,8) AS st, f.`start_hight`
FROM vbsk_dk_02.fab_master_flyvedata f
Where st between 12:00:00 AND 18:00:00
Run Code Online (Sandbox Code Playgroud)
但无法让它发挥作用
我正在尝试使用MySQL进行时间检查,以查看当前时间是否介于2个给定时间戳之间.
我想要做的是如果设置的通知范围介于2个给定时间戳之间,则生成通知列表.
因此,如果有人说在'18:00:01'和'07:59:59'之间通过TXT消息通知我,那么通过EMAIL BETWEEN '18:00:01'和'07:59:59'通知我.
这就是我所做的.
所以我尝试了以下(假设当前时间是17:00:00)
SELECT CURTIME() BETWEEN '08:00:00' AND '18:00:00' //this retured 1 which is correct
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试以下(假设当前时间是19:00:00)
SELECT CURTIME() BETWEEN '18:00:01' AND '07:59:59' //this return 0
Run Code Online (Sandbox Code Playgroud)
这是我目前的查询
SELECT DISTINCT
TRIM(su.first_name) AS name,
CASE WHEN n.notification_method = "SMS" THEN
CASE WHEN cc.gateway IS NOT NULL THEN CONCAT(su.phone_cell, cc.gateway) ELSE "" END
ELSE su.email1 END AS address
FROM ticketing_system_notifications AS n
INNER JOIN(
SELECT DISTINCT created_by, issue_id FROM ticketing_system_discussions
WHERE status = 1
) AS ds ON n.notify = …Run Code Online (Sandbox Code Playgroud) 我有一个带有存储库的 Spring 应用程序
interface EventRepository extends JpaRepository<Event, Long>, QueryByExampleExecutor<Event> { }
Event e = new Event();
e.setTest('ABC');
eventRepository.findAll(Example.of(e), pageable);
Run Code Online (Sandbox Code Playgroud)
工作得很好,我快到了。但我需要限制在“从”和“到”之间的日期范围内
我看到一些帖子说它不适用于 QBE,但这是在 2015 年。
我创建了一个 Range 对象,但我不知道如何应用它。
我不能使用默认的弹簧方式
@Transactional
interface EventRepository extends JpaRepository<Event, Long>, QueryByExampleExecutor<Event> {
def findBetween(Date lower, Date upper)
}
Run Code Online (Sandbox Code Playgroud)
因为我有一堆动态搜索参数。
我正在尝试生成一个用于广播到数据帧中的掩码:一个布尔系列,指示给定的行是否位于两个值之间。对于单个逻辑语句来说,这很容易做到,例如数据框中的最后五个元素:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,1))
mask = (df.index.values>4)
df.loc[mask,'column'] = range(0,5)
Run Code Online (Sandbox Code Playgroud)
但如何用更多的交叉陈述来做同样的事情呢?例如,我可以寻址第 2 行到第 6 行,而不是数组中的最后五个组件吗?尝试对掩码使用 AND 语句失败,并且我无法在数据帧索引值上使用 Between 。
我有一个包含startValue(在 列X1)和endValue(在 列X2)的数据框,以及异常值列表。我需要计算有多少异常值属于这些特定的startValue和endValue。这是一个最小的例子和我的尝试:
library("dplyr")
set.seed(2022)
dat = data.frame(matrix(sort(sample(1:500, 50)), ncol = 2, byrow = T))
dim(dat)
dat$Outliers = NA
outliers = sort(sample(1:500, 30))
for (i in 1:25){
dat$Outliers[i] = length(which(between(outliers, dat$X1[i], dat$X2[i]) == T))
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常。但我的真实数据有数百万行,这个for循环需要很多时间。有没有更快的方法来解决这个问题?
我在这里大量简化了我的例子,所以请原谅它,如果它看起来很简单我想要解决的问题.
是否可以BETWEEN转换为NOT BETWEEN依赖于行的值(为了简单起见,我在这里使用了一个变量),而不重复之间的语句?
我理解使用case语句和布尔逻辑来帮助使静态sql更"动态",但我似乎无法为运营商找到一种方法BETWEEN.
也许使用一些聪明的按位操作?
我在开发中有一些基于集合的SQL已经变得难以管理,所以我希望通过避免重复来简化它.
我试图以基于SET的方式进行,如果可能的话,避免使用UDF.
DECLARE @is int
set @is = 1
DECLARE @TestTable TABLE
(
Name varchar(100),
DOB datetime
)
INSERT INTO @TestTable(Name, DOB)
SELECT 'bob', '2011-08-18 10:10:10.100' UNION ALL
SELECT 'fred', '2014-08-18 10:10:10.100'
SELECT Name, DOB
FROM @TestTable
WHERE
(@is = 1) AND (DOB BETWEEN '2011-08-18' AND '2012-08-18')
OR
(@is = 0) AND (DOB NOT BETWEEN '2011-08-18' AND '2012-08-18')
Run Code Online (Sandbox Code Playgroud)
所以在上面的例子中,如果@is = 1,则返回bob.如果@is = 0,则返回fred.
编辑:为了澄清,上述声明工作正常,但我正在尝试优化它,以避免编写2个BETWEEN语句.我希望根据@is的值来翻转逻辑....某处使用is来放入NOT.
编辑2:
请参阅下面的一些伪代码,了解我正在努力实现的目标.它是伪的,因为t-SQL不允许在这样的基于集合的操作中将"NOT""注入"代码中(我试图避免使用stringy-dynamic sql).
SELECT Name, …Run Code Online (Sandbox Code Playgroud) 在SQL中,您可以编写一个查询,该查询在类型为'nvachar'的列上执行介于两者之间,并且只返回指定的最小值和最大值之间的所有行.
例如,
Table (Id:Int, Name:nvarchar):
Contents:
1, Annie
2, Bill
3, Frank
4, Phil
5, Ted
Select * where Name Between 'Frank' and 'Ted'
Should return Frank, Phil, and Ted.
Run Code Online (Sandbox Code Playgroud)
有没有办法用linq做到这一点,或者我将不得不创建自定义查询并执行它?我见过的唯一例子涉及日期或整数,这使得它非常容易(可以使用比较运算符,如<,>等).
我需要选择时间戳在现在和过去5分钟之间的行.我该怎么做?像这样的东西:
select * from tableName where timestamp between sysdate and up to -5 min
Run Code Online (Sandbox Code Playgroud)
越简单越好.
我正在构建一个小型Web应用程序,让用户可以预订办公室房间和设备.对于预订,他们输入开始日期和结束日期.
当用户试图找出2012-10-23中是否有任何(例如)汽车可用时,并且数据库保存了Start:2012-10-20和End:的预订日期记录(2012-10-25for say)所有汽车,我如何包括所有汽车我在搜索中的日期条目之间的日期?
该$date变量得到它的从日期搜索表单域值.
不幸的是,这不起作用,我无法弄清楚如何使用daysAsSql进行此查询:
$conditions = array(
'conditions' => array(
'? BETWEEN ? AND ?' => array($date,'Equipment.date_start','Equipment.date_end'),
)));
$this->set('equipments', $this->Equipment->find('all', $conditions));
Run Code Online (Sandbox Code Playgroud)