【问题标题】:Get all Mondays from a particular timezone in SQLITE where the Date Text are stored in UTC Timezone从 SQLITE 中的特定时区获取所有星期一,其中日期文本存储在 UTC 时区中
【发布时间】:2022-11-23 08:09:19
【问题描述】:

我有一个名为 Dates 的日期列(因为 sqlite 不存储日期的文本)。这些日期以 UTC 格式存储。我有一个时区“欧洲/伦敦”(这可以更改,使本地时间在这里不可行)并且我想在这个时区获得所有星期一。但是,如果我只是选择 where strftime('%w', Dates)=01,它只会从 UTC 时间获取星期一。我想从“欧洲/伦敦”或任何其他时区获取星期一。我怎样才能做到这一点?

编辑:澄清了我的问题,本地时间在这里不起作用

【问题讨论】:

  • 您是否尝试过使用 localtime 修饰符?? strftime('%w', Dates, 'localtime');假设机器上的本地时间是 Europe/London
  • 我不想那样做,就好像我想要一个不同的时区一样,这是行不通的。

标签: sql sqlite datetime


【解决方案1】:

local_ts 和local_day_of_week 中的值取决于系统设置

with cte_utc_dates (utc_ts) as (
values ('2022-11-22 00:00:00'),
       ('2022-11-22 01:00:00'),
       ('2022-11-22 02:00:00'),
       ('2022-11-22 03:00:00'),
       ('2022-11-22 04:00:00'),
       ('2022-11-22 05:00:00'),
       ('2022-11-22 06:00:00'),
       ('2022-11-22 07:00:00'),
       ('2022-11-22 08:00:00'),
       ('2022-11-22 09:00:00'),
       ('2022-11-22 10:00:00'),
       ('2022-11-22 11:00:00'),
       ('2022-11-22 12:00:00'),
       ('2022-11-22 13:00:00'),
       ('2022-11-22 14:00:00'),
       ('2022-11-22 15:00:00'),
       ('2022-11-22 16:00:00'),
       ('2022-11-22 17:00:00'),
       ('2022-11-22 18:00:00'),
       ('2022-11-22 19:00:00'),
       ('2022-11-22 20:00:00'),
       ('2022-11-22 21:00:00'),
       ('2022-11-22 22:00:00'),
       ('2022-11-22 03:00:00'))
select utc_ts,
       strftime('%w', utc_ts)                        as utc_day_of_week,
       datetime(utc_ts, 'localtime')                 as local_ts,
       strftime('%w', datetime(utc_ts, 'localtime')) as local_day_of_week
  from cte_utc_dates;

【讨论】:

  • 感谢您的回复,但是,我希望在没有本地时间的情况下进行。那可能吗?
猜你喜欢
  • 2023-03-26
  • 2011-06-06
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2016-03-12
  • 2013-06-10
  • 2016-09-27
  • 1970-01-01
相关资源
最近更新 更多