要提取给定年份的一周,我们可以使用:
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) 我有以下视图,我需要做的是获取具有相同 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 相当于这个函数的是什么?
我有下表:
CREATE TABLE f_contact (
agent character varying,
datetimeconnect timestamp without time zone,
datetimedisconnect timestamp without time zone,
duration integer
);
Run Code Online (Sandbox Code Playgroud)
duration是断开时间和连接时间之间的时间(以秒为单位)。
我可能有这样的数据:
agent datetimeconnect datetimedisconnect duration
20024 2019-03-18 12:01:00.0 2019-03-18 13:01:30.0 3630
20011 2019-03-11 08:47:40.0 2019-03-11 09:30:10.0 2550
Run Code Online (Sandbox Code Playgroud)
我想获取这些数据并将时间分布在 15 分钟的间隔内,这样我得到的结果如下:
20024 12:00 840
20024 12:15 900
20024 12:30 900
20024 12:45 900
20024 13:00 90
20011 08:45 740
20011 09:00 900
20011 09:15 900
20011 09:30 10
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标?
我正在使用以下条件来截断 postgres 中的日期
to_date(to_char(trunc(appointment_date),'YYYYMMDD')||appointment_end_time,''YYYYMMDDHH24:MI:SS')AS tq
Run Code Online (Sandbox Code Playgroud)
我如何在 postgres 中使用它?
如何使用Moment JS和jQuery找出某个工作日(例如:星期二)中有多少个在日期范围内?
我可以找到使用差异的天数:http: //momentjs.com/docs/#/displaying/difference/
我知道开始和结束日期,所以我觉得应该可以吗?
示例:3月1日到3月25日之间有多少个星期二?