【问题标题】:Get week of the year after setting start day as Sunday将开始日期设置为星期日后获取一年中的一周
【发布时间】:2019-11-20 02:59:27
【问题描述】:

在将一周的开始设置为星期日后,我试图获取一年中的一周。

这是必需的,因此我可以在我的 python 脚本中镜像 Teradata 逻辑。在 Teradata 中,一周从星期日开始。所以下面的查询返回 -

select WEEKNUMBER_OF_YEAR(to_date('2019-06-01'))
21

但是当我在 python 中运行它时,它返回 22

import datetime
datetime.date(2019, 6, 1).isocalendar()[1]

我尝试将星期日设置为一周的第一天,但​​结果相同

import calendar
import datetime
calendar.setfirstweekday(calendar.SUNDAY)
datetime.date(2019, 6, 1).isocalendar()[1]

有什么帮助吗?

【问题讨论】:

  • 可能在python中是第22周,而在teradata中是value的整数部分?我不确定,这是我的假设。如果尝试返回一年中的某一天怎么办?一样吗?
  • Teradata weeknumber_of_year 有点奇怪(至少对我来说)。这是从年初开始的周数。例如,'2019-01-01' 将返回第 0 周,因为它是从年初开始的第 0 周。我认为第 1 周在技术上是一年中第一个完整的一周。

标签: python-3.x date datetime teradata


【解决方案1】:

你可能想要strftime("%U")

一年中的周数(星期日为一周的第一天)作为 零填充十进制数。新年前的所有日子 星期日被认为是在第 0 周。

要匹配 Python 的 isocalendar(),您也可以在 Teradata 中切换到 ISO:

WEEKNUMBER_OF_YEAR(to_date('2019-06-01'), 'ISO')

顺便说一句,没有理由写to_date('2019-06-01'),只需使用日期文字代替:DATE '2019-06-01'

【讨论】:

  • 我的要求是另一种方式......将 Teradata 逻辑导入 python 脚本。 strftime("%U") 成功了。
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2015-03-15
  • 1970-01-01
  • 2019-11-04
  • 2016-11-29
  • 2017-07-19
  • 2017-03-02
相关资源
最近更新 更多