如何根据另一个日期列创建“周列”?

Posted

技术标签:

【中文标题】如何根据另一个日期列创建“周列”?【英文标题】:How to create 'Week column' based on another date column? 【发布时间】:2020-04-10 19:36:32 【问题描述】:

我有“jobstarttimeiso”列,我想根据日期为一年中的第几周创建另一个列。我该怎么做呢?我正在使用 Redash 从 redshift 数据库中查询。请帮忙!谢谢

【问题讨论】:

您如何定义“一年中的第几周”?你的意思是“周数”,第一周是第 1 周,最后一周是第 52 周或第 53 周?你如何定义“第一周”——是整整一周,还是从特定的一天(例如周日或周一)开始?看看DATE_PART Function - Amazon Redshift。它具有“周”功能。 是的,我已经尝试过日期部分,但由于某种原因它不起作用。第 1 周 - 第 52 周 请定义“不起作用”。你收到错误了吗?或者你只是对结果不满意?结果与您寻求的结果有何不同? 抱歉 - 我收到了一个错误。 我在上面添加了一张图片作为使用date_part时的参考 【参考方案1】:

extract 函数将返回一个星期数,例如

select extract(week from jobstarttimeiso)  as weeknumber

一般:

EXTRACT ( datepart FROM  TIMESTAMP 'literal' | timestamp  )

见:https://docs.aws.amazon.com/redshift/latest/dg/r_EXTRACT_function.html

或者你也可以使用to_char()

TO_CHAR (timestamp_expression | numeric_expression , 'format')

使用参数IYYY 作为 ISO 8601 周编号年份的格式(4 位或更多位)

【讨论】:

以上是关于如何根据另一个日期列创建“周列”?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一列中的特定日期和级别为列分配级别?

根据另一列的值修改熊猫中的日期时间列

根据变更日志创建从/到日期列

从 Angular-ui 引导日期选择器中删除周列和按钮

根据另一列中的更改创建带有时间戳的最后修改列

如何使用另一个表中的日期列过滤一个表的开始和结束日期