标签: date-arithmetic

你能在 PostgreSQL 中定义一个自定义的“周”吗?

要提取给定年份的一周,我们可以使用:

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)

sql postgresql timestamp date-arithmetic

5
推荐指数
1
解决办法
1466
查看次数

Oracle 中不同行中相同字段的日期/时间差异

我有以下视图,我需要做的是获取具有相同 Vehicle AND OrderCode 的每 2 条记录之间的字段 ActionDate 的日期差异,我如何在 Oracle 数据库中实现这一点。

还考虑到减去的日期应该是具有模式 O - 模式 I 的日期

我需要获取差异列表才能获得该时间的平均值。

谢谢你的帮助。

数据

sql oracle datetime date-arithmetic

5
推荐指数
1
解决办法
2052
查看次数

使用 R 测试日期是否出现在多个日期范围内

我有一个具有多个日期范围的数据框(准确地说是 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 的betweeninterval函数以及各种 Stackoverflow 问题,但找不到好的解决方案。

r date intervals date-arithmetic

5
推荐指数
1
解决办法
1535
查看次数

在 R 中按组计算日期之间的差异

我正在使用逻辑暴露来计算鸟巢的孵化成功率。我的数据集非常广泛,我有大约 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)

r date-arithmetic

5
推荐指数
1
解决办法
6571
查看次数

是否存在 yday lubridate 函数的反函数?

我有一个格式为“一年中的某一天”的日期列表,是通过将 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 格式的日期?

r date-arithmetic

5
推荐指数
1
解决办法
2751
查看次数

在 PostgreSQL 中正确处理 TIME WITH TIME ZONE

我们有一个表格,里面装满了来自另一个系统的遗留报告的数据。该表的列反映了报告的相同结构。

以下是表的缩写结构:

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 中指定的一天中的一个时刻。

其他一些需要考虑的点:

  • 我们不知道为什么我们从旧系统收到的报告中的 START_HOUR 是 …

postgresql timezone date-arithmetic dst

5
推荐指数
1
解决办法
1154
查看次数

如何获取 PostgreSQL 中两个日期之间的季度数?

我有 MS SQL 函数DATEDIFF

SELECT DATEDIFF(QQ, 0, '2018-09-05')
Run Code Online (Sandbox Code Playgroud)

返回 474(整数)。

PostgreSQL 相当于这个函数的是什么?

sql postgresql date-arithmetic

5
推荐指数
1
解决办法
4950
查看次数

将时间分配到间隔桶中

我有下表:

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)

如何实现这一目标?

sql postgresql date-arithmetic generate-series

5
推荐指数
1
解决办法
1482
查看次数

如何截断postgres中的日期?

我正在使用以下条件来截断 postgres 中的日期

to_date(to_char(trunc(appointment_date),'YYYYMMDD')||appointment_end_time,''YYYYMMDDHH24:MI:SS')AS tq
Run Code Online (Sandbox Code Playgroud)

我如何在 postgres 中使用它?

postgresql date-arithmetic

5
推荐指数
2
解决办法
1万
查看次数

如何使用Moment JS计算范围之间给定工作日的数量?

如何使用Moment JS和jQuery找出某个工作日(例如:星期二)中有多少个在日期范围内?

我可以找到使用差异的天数:http: //momentjs.com/docs/#/displaying/difference/

我知道开始和结束日期,所以我觉得应该可以吗?

示例:3月1日到3月25日之间有多少个星期二?

jquery date-arithmetic momentjs

4
推荐指数
1
解决办法
3717
查看次数