我正在尝试将BETWEEN用于列名而不是直接值,如下所示:
SELECT * FROM table WHERE column1 BETWEEN column2 AND column3;
Run Code Online (Sandbox Code Playgroud)
这会返回17行,但如果我写:
SELECT * FROM table WHERE (column1 <= column2 AND column1 >= column3) OR (column1 >= column2 AND column1 <= column3)
Run Code Online (Sandbox Code Playgroud)
我得到大约600行..在这两种情况下我只得到其中column1值实际上是中间值的行,但是第二种方法给了我更多的结果,所以第一种方法有问题.
我怀疑问题可能是使用BETWEEN子句与列名,而不是纯值,并且不知何故SQL正在将列名转换为实际值..奇怪,但有人可以启发我吗?谢谢
我对此查询有疑问:
SELECT *
FROM runs
WHERE (NOW() BETWEEN began_at
AND finished_at)
Run Code Online (Sandbox Code Playgroud)
你认为为beginning_at和finished_at列创建复合索引是否有意义?或者只为starts_at创建索引是有意义的?
我一直在为我正在处理的项目记录Twitter数据,日期信息保存Thu, 14 Jul 2011 06:21:48 +0000在字符串字段中.
如何使用mySQL选择两个日期之间的数据?我可以获得大于值或小于值但不在值之间的数据.
例如,数据是:
Thu, 14 Jul 2011 06:21:48 +0000
Thu, 14 Jul 2011 12:18:21 +0000
Thu, 14 Jul 2011 18:48:00 +0000
Thu, 14 Jul 2011 23:48:02 +0000
Fri, 15 Jul 2011 06:48:10 +0000
Fri, 15 Jul 2011 12:48:00 +0000
Fri, 15 Jul 2011 18:43:32 +0000
Fri, 15 Jul 2011 23:44:08 +0000
Sat, 16 Jul 2011 06:47:08 +0000
Sat, 16 Jul 2011 12:46:49 +0000
Sat, 16 Jul 2011 18:45:41 +0000
Sat, 16 Jul 2011 …Run Code Online (Sandbox Code Playgroud) 我需要计算 firebird base(版本 2.5)中两个日期之间的工作日
我有一个带有工作日(日期,天--空闲/工作)的表(table_date),我还有另一个带有start_date和end_date的表。例如,我们有两个日期 start_date=2015-04-04 和 end_date=2015-04-10 2015-04-05 和 2015-04-06 是免费的。这两个日期之间有 6 天,但 4 个工作日。
如何在基数中计算这个?
如何在SQLite中检索"2015-10-02"到"2015-11-02"之间的所有日期?(字符串类型)结果如下:
'2015-10-03'
'2015-10-04'
'2015-10-05'
...
'2015-11-01'
Run Code Online (Sandbox Code Playgroud)
这不是一个问题SELECT * FROM myTable where myDate <= '2015-01-01' AND myDate >= '2015-01-31'.这不是选择所有具有两天之间字段的现有记录.我只想检索两个日期之间的所有可能日期值.我想用它们按天查询记录数.
Date Count
'2015-01-01' 19
'2015-01-02' 10
'2015-01-03' 0
...
Run Code Online (Sandbox Code Playgroud) pyspark的“介于”功能不包含在时间戳输入中。
例如,如果我们想要两个日期之间的所有行,例如“ 2017-04-13”和“ 2017-04-14”,那么当日期作为字符串传递时,它将执行“排他”搜索。即,它省略了“ 2017-04-14 00:00:00”字段
但是,该文档似乎暗示它具有包容性(尽管在时间戳上没有引用)
当然,一种方法是从上限添加一个微秒,并将其传递给函数。但是,不是一个很好的解决方案。进行包含式搜索的任何干净方法?
例:
import pandas as pd
from pyspark.sql import functions as F
... sql_context creation ...
test_pd=pd.DataFrame([{"start":'2017-04-13 12:00:00', "value":1.0},{"start":'2017-04-14 00:00:00', "value":1.1}])
test_df = sql_context.createDataFrame(test_pd).withColumn("start", F.col("start").cast('timestamp'))
test_df.show()
+--------------------+-----+
| start|value|
+--------------------+-----+
|2017-04-13 12:00:...| 1.0|
|2017-04-14 00:00:...| 1.1|
+--------------------+-----+
test_df.filter(F.col("start").between('2017-04-13','2017-04-14')).show()
+--------------------+-----+
| start|value|
+--------------------+-----+
|2017-04-13 12:00:...| 1.0|
+--------------------+-----+
Run Code Online (Sandbox Code Playgroud) 我有一个表,每行包含一个日期和一些任意的数值.我需要将此值与特定但动态的日期间隔相加.
SELECT VERSION();
5.0.51a-24+lenny5
CREATE TABLE IF NOT EXISTS `work_entries` (
`entry_id` int(10) unsigned NOT NULL auto_increment,
`employee_id` tinyint(3) unsigned NOT NULL,
`work_date` date NOT NULL,
`hour_count` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`entry_id`)
);
INSERT INTO `work_entries` (`entry_id`, `employee_id`, `work_date`, `hour_count`) VALUES
(1, 1, '2011-04-25', 2),
(2, 1, '2011-04-26', 3),
(3, 1, '2011-04-27', 1),
(4, 2, '2011-04-25', 2),
(5, 2, '2011-04-27', 4),
(6, 1, '2011-05-08', 2),
(7, 2, '2011-05-06', 8),
(8, 2, '2011-05-08', 9),
(9, 2, '2011-05-09', 1),
(10, …Run Code Online (Sandbox Code Playgroud) 我通常必须查询一个非常大的表,查找每个变量有多个条件的多个变量.通常,需要在多个范围内查询变量.例如,我可能需要VAR_1的所有记录,其中VAR_1在200-300,350-400,450-500之间.
通常我会写如下,但有人告诉我使用IN()而不是多个OR会更有效率.
SELECT * FROM table
WHERE VAR_1 BETWEEN '200' AND '300' OR
VAR_1 BETWEEN '350' AND '400' OR
VAR_1 BETWEEN '450' AND '500'
Run Code Online (Sandbox Code Playgroud)
有没有办法压缩这些信息,并OR通过嵌套LIKE或BETWEEN条款摆脱s IN()?有点像:
WHERE VAR_1 IN (BETWEEN '200' AND '300', BETWEEN '350' AND '400', BETWEEN '450' AND '500')
要么
WHERE VAR_1 IN ('[200-300]','[350-400]','[450-500]')
我尝试过这样的东西,但语法显然不正确.您可以指出我的任何想法或方向都很棒,对SQL来说仍然是新手.
我有一个MySQL表数据,如下所示
+--------------------------+
| period |
+--------------------------+
| 2014-11-27 to 2014-11-28 |
| 2014-11-09 to 2014-11-09 |
| 2014-11-07 to 2014-11-07 |
| 2014-11-06 to 2014-11-06 |
| 2014-11-04 to 2014-11-04 |
| 2014-11-02 to 2014-11-02 |
| 2014-11-01 to 2014-11-02 |
| 2014-10-24 to 2014-10-24 |
| 2014-10-23 to 2014-10-24 |
| 2014-10-23 to 2014-10-24 |
| 2014-10-23 to 2014-10-23 |
| 2014-10-23 to 2014-10-23 |
| 2014-10-20 to 2014-10-20 |
| 2014-10-18 to 2014-10-18 |
| 2014-10-17 to 2014-10-17 …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用jooq,我需要在两个日期之间查询一些数据.
生成正确数据的sql查询是
select created_on from queue_token where created_on between '2015-07-16' and '2015-07-17' and token_queue_id=1;
Run Code Online (Sandbox Code Playgroud)
我写的等效jooq查询在下面,但没有给出所需的结果
create.select().from(com.database.tables.QueueToken.QUEUE_TOKEN)
.where(com.database.tables.QueueToken.QUEUE_TOKEN.TOKEN_QUEUE_ID.equal(1))
.and(com.database.tables.QueueToken.QUEUE_TOKEN.CREATED_ON.between(new Timestamp(fromDate.getTime())).and(new Timestamp(toDate.getTime())))
.fetch();
Run Code Online (Sandbox Code Playgroud)
jooq查询生成结果,但只生成与fromDate完全匹配的记录.所以基本上它不适用于日期范围.
有人可以帮忙吗?