【问题标题】:How to convert output timezone per query in sequel ruby?如何在 sequel ruby​​ 中转换每个查询的输出时区?
【发布时间】:2019-05-22 00:43:05
【问题描述】:

我希望能够根据我用户的首选时区在每个查询中设置时区,而无需在我的应用程序生成的每个原始 sql 中添加时区转换。

我能够使用此配置查询/检索“亚洲/马尼拉”TZ 中的记录

Sequel.extension :named_timezones Sequel.application_timezone = '亚洲/马尼拉'

是否可以为每个查询设置 application_timezone 以便我将在每个请求中传递当前应用程序用户的时区。

【问题讨论】:

  • 您是否有理由不想存储用户的首选时区而只在他们的时区显示信息?

标签: ruby sequel


【解决方案1】:

您可能想要使用 Sequel 的 thread_local_timezones 扩展:http://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/thread_local_timezones_rb.html

这是每个线程,而不是每个查询,但希望仍能满足您的需求。

【讨论】:

  • 顺便说一句,可以根据登录用户的性能创建线程吗?
  • 可能不是一个好主意。我认为大多数人只会定义一个产生并具有确保子句将线程本地时区设置回零的方法。然后,您可以在用户特定时区中围绕您想要的任何代码调用该方法。
【解决方案2】:

以 UTC 存储所有内容,然后在 UI/表示层中进行转换。

【讨论】:

  • 是的,我们将所有内容都存储在 UTC 中,并且在 ui 中转换不是问题。我的问题是在我们的应用程序中,我们让用户在文本框中输入 sql 查询并运行它。我们不想让用户在他们所做的每一个中进行日期转换,例如在 where 子句中,他们将以无时区格式输入日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 2014-05-20
  • 2011-07-07
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多