我有一个表(其中包括)时间戳列(名为timestamp;它是标准的Oracle DATE数据类型).记录大约相隔4-11分钟,每小时大约7或8条记录,我正在尝试确定它们是否有任何模式.
是否有一种简单的方法可以查看每条记录,以及记录在上一条记录之后发生的分钟数?
谢谢,AndyDan
如何在python中找到最近的15(或10)分钟间隔?例如
>>> datetime.datetime.now()
datetime.datetime(2011, 2, 22, 15, 43, 18, 424873)
Run Code Online (Sandbox Code Playgroud)
我想要当前的15分钟间隔(15:30-15:44),所以我想将上述日期时间转换为
datetime.datetime(2011, 2, 22, 15, 30, 00, 00)
Run Code Online (Sandbox Code Playgroud) 要提取给定年份的一周,我们可以使用:
SELECT EXTRACT(WEEK FROM timestamp '2014-02-16 20:38:40');
Run Code Online (Sandbox Code Playgroud)
但是,我试图以一种奇怪的格式将几周组合在一起。我一周的开始将在周一凌晨 4 点开始,并在下周一凌晨 3:59:59 结束。
理想情况下,我想创建一个提供开始和结束日期的查询,然后按上面列出的周数对该期间的总销售额进行分组。
例子:
SELECT
(some custom week date),
SUM(sales)
FROM salesTable
WHERE
startDate BETWEEN 'DATE 1' AND 'DATE 2'
Run Code Online (Sandbox Code Playgroud)
我不打算更改EXTRACT()函数,而是创建一个查询,该查询将从以下示例表中提取并输出示例结果。
如果查询中的“DATE 1”是“2014-07-01”并且“DATE 2”是“2014-08-18”:
示例表:
itemID | timeSold | price
------------------------------------
1 | 2014-08-13 09:13:00 | 12.45
2 | 2014-08-15 12:33:00 | 20.00
3 | 2014-08-05 18:33:00 | 10.00
4 | 2014-07-31 04:00:00 | 30.00
Run Code Online (Sandbox Code Playgroud)
想要的结果:
weekBegin | priceTotal
----------------------------------
2014-07-28 04:00:00 | 30.00
2014-08-04 04:00:00 | 10.00 …Run Code Online (Sandbox Code Playgroud) 下面是我的数据表:
CREATE TABLE customer_wer (
id_customer NUMBER,
name VARCHAR2(10),
surname VARCHAR2(20),
date_from DATE,
date_to DATE);
--KAROLINA BIELAWSKA - GAP MAR APR 2000 and JUN JUL 2001
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JAN-00', '28-MAR-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-APR-00', '30-JUN-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JUL-00', '30-SEP-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-OCT-00', '31-DEC-00');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-JAN-01', '31-MAR-01');
INSERT INTO customer_wer VALUES (2, 'Karolina', 'Bielawska', '01-APR-01', '15-JUN-01'); …Run Code Online (Sandbox Code Playgroud) 我有以下视图,我需要做的是获取具有相同 Vehicle AND OrderCode 的每 2 条记录之间的字段 ActionDate 的日期差异,我如何在 Oracle 数据库中实现这一点。
还考虑到减去的日期应该是具有模式 O - 模式 I 的日期
我需要获取差异列表才能获得该时间的平均值。
谢谢你的帮助。

我有一个具有多个日期范围的数据框(准确地说是 45):
Range Start End
1 2014-01-01 2014-02-30
2 2015-01-10 2015-03-30
3 2016-04-20 2016-10-12
... ... ...
Run Code Online (Sandbox Code Playgroud)
他们永远不会重叠
我还有一个包含各种事件日期(200K+)的数据框:
Event Date
1 2014-01-02
2 2014-03-20
3 2015-04-01
4 2016-08-18
... ...
Run Code Online (Sandbox Code Playgroud)
我想测试这些日期是否在以下任何范围内:
Event Date InRange
1 2014-01-02 TRUE
2 2014-03-20 FALSE
3 2015-04-01 FALSE
4 2016-08-18 TRUE
...
Run Code Online (Sandbox Code Playgroud)
执行此测试的最佳方法是什么?我查看了 lubridate 的between和interval函数以及各种 Stackoverflow 问题,但找不到好的解决方案。
我正在使用逻辑暴露来计算鸟巢的孵化成功率。我的数据集非常广泛,我有大约 2,000 个巢穴,每个巢穴都有一个唯一的 ID(“ClutchID”)。我需要计算给定巢穴暴露的天数(“暴露”),或者更简单地说,是第一天也是最后一天。我使用了以下代码:
HS_Hatch$Exposure=NA
for(i in 2:nrow(HS_Hatch)){HS_Hatch$Exposure[i]=HS_Hatch$DateVisit[i]- HS_Hatch$DateVisit[i-1]}
Run Code Online (Sandbox Code Playgroud)
其中 HS_Hatch 是我的数据集,DateVisit 是实际日期。唯一的问题是 R 正在计算第一个日期的曝光值(这没有意义)。
我真正需要的是计算给定离合器的第一个日期和最后一个日期之间的差异。我还研究了以下内容:
Exposure=ddply(HS_Hatch, "ClutchID", summarize,
orderfrequency = as.numeric(diff.Date(DateVisit)))
df %>%
mutate(Exposure = as.Date(HS_Hatch$DateVisit, "%Y-%m-%d")) %>%
group_by(ClutchID) %>%
arrange(Exposure) %>%
mutate(lag=lag(DateVisit), difference=DateVisit-lag)
Run Code Online (Sandbox Code Playgroud)
我仍在学习 R,所以任何帮助将不胜感激。
编辑:以下是我正在使用的数据示例
HS_Hatch <- structure(list(ClutchID = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L
), DateVisit = c("3/15/2012", "3/18/2012", "3/20/2012", "4/1/2012",
"4/3/2012", "3/18/2012", "3/20/2012", "3/22/2012", "4/3/2012",
"4/4/2012", …Run Code Online (Sandbox Code Playgroud) 我有一个格式为“一年中的某一天”的日期列表,是通过将 lubridate::yday() 函数应用于日期列表而获得的。例如,从以下日期开始(mm-dd-yyyy 格式):
01-01-2015
01-02-2015
...
Run Code Online (Sandbox Code Playgroud)
通过应用 yday() 你得到
1
2
...
Run Code Online (Sandbox Code Playgroud)
是否有一个函数可以根据 yday 输出和年份执行相反的操作?即,从 yday 值和年份返回 mm-dd-yyyy 格式的日期?
我们有一个表格,里面装满了来自另一个系统的遗留报告的数据。该表的列反映了报告的相同结构。
以下是表的缩写结构:
CREATE TABLE IF NOT EXISTS LEGACY_TABLE (
REPORT_DATE DATE NOT NULL,
EVENT_ID BIGINT PRIMARY KEY NOT NULL,
START_HOUR TIMESTAMP WITHOUT TIME ZONE,
END_HOUR TIME WITHOUT TIME ZONE,
EXPECTED_HOUR TIME WITHOUT TIME ZONE
);
Run Code Online (Sandbox Code Playgroud)
我们正在重构这个表来处理不同客户端的不同时区。新结构将类似于:
CREATE TABLE IF NOT EXISTS LEGACY_TABLE (
REPORT_DATE DATE NOT NULL,
EVENT_ID BIGINT PRIMARY KEY NOT NULL,
START_HOUR TIMESTAMP WITH TIME ZONE,
END_HOUR TIME WITH TIME ZONE,
EXPECTED_HOUR TIME WITH TIME ZONE
);
Run Code Online (Sandbox Code Playgroud)
这些小时字段表示由 REPORT_DATE 列表示的一天中的特定时间点。我的意思是每个 TIME 列都代表 REPORT_DATE 中指定的一天中的一个时刻。
其他一些需要考虑的点:
我有 MS SQL 函数DATEDIFF
SELECT DATEDIFF(QQ, 0, '2018-09-05')
Run Code Online (Sandbox Code Playgroud)
返回 474(整数)。
PostgreSQL 相当于这个函数的是什么?