当前位置: 首页 > 面试题库 >

SQL查询中的时区转换

宗政唯
2023-03-14
问题内容

我正在使用查询从存储为GMT的Oracle DB获取一些应用程序的“接收日期”。现在,我必须在检索时将其转换为东部标准/夏令时。我为此使用以下查询:

   select to_char (new_time(application_recv_date,'gmt','est'), 'MON dd, YYYY') from application

它适合标准时间。但是,为了节省夏时制,我们需要根据时区信息将其转换为“ edt”。我不确定如何执行此操作。请帮帮我


问题答案:

您可以使用此查询,而不必担心时区更改。

select to_char(cast(application_recv_date as timestamp) at time zone 'US/Eastern',
               'MON dd, YYYY'
              )
from application;

前任:

美东时间:

select cast(date'2014-04-08' as timestamp) d1,
       cast(date'2014-04-08' as timestamp) at time zone 'US/Eastern' d2
from dual;

D1                                 D2
---------------------------------- -------------------------------------------
08-APR-14 12.00.00.000000 AM       07-APR-14 08.00.00.000000 PM US/EASTERN

美东时间:

select cast(date'2014-12-08' as timestamp) d1,
       cast(date'2014-12-08' as timestamp) at time zone 'US/Eastern' d2
from dual;

D1                                 D2
---------------------------------- -------------------------------------------
08-DEC-14 12.00.00.000000 AM       07-DEC-14 07.00.00.000000 PM US/EASTERN

更新:

感谢Alex Poole提醒您,如果未指定时区,则使用本地时区进行转换。

要强制将日期识别为格林尼治标准时间,请使用from_tz。

from_tz(cast(date'2014-12-08' as timestamp), 'GMT') at time zone 'US/Eastern'


 类似资料:
  • 问题内容: 我在表上有这些数据(使用SQL Server 2005): 我想将其转换为: 现在最困难的部分是:假设我没有其他数据字段指定哪个记录是早餐,午餐或晚餐。我想将它们与最短的开始时间相关联,即,开始时间越短将是早餐,其次就越是午餐,晚餐就越高(假设所有三个(并且只有三个)记录总是被填充)。 有任何想法吗? 问题答案:

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 问题内容: 我正在使用CodeIgniter将一些数据插入MySQL表中。因为我正在使用并且不想编辑活动记录类以启用此功能,所以我正在手动生成SQL查询。 问题: 当字符串中包含单引号时,查询失败。如何使这些需要转义的字符自动转义,例如使用活动记录时? 问题答案: 另一种方法是使用查询绑定,该绑定会自动转义所有值:

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 问题内容: 我有这个查询,我需要在hql中将其转换,但我有点困惑,不知道如何编写hql中“ where”子句中出现的条件。 什么是hql等效于此sql查询? 问题答案: 请在HQL查询下面找到:假设p_message和p_config是域对象名称,其他是映射到列的属性。

  • 问题内容: 我使用的是codeigniter,大多数时候都使用活动记录进行查询(这会自动使它们转义),但是由于变量的原因,该查询似乎不太适合它。因此,我需要弄清楚如何手动转义查询。 Codeigniter文档建议以这种方式转义查询: 我的原始查询 我逃脱的查询 但是我在正确使用语法上遇到了麻烦。错误消息是: PHP错误消息:未定义的变量:user_language SQL错误:语法错误…在第1行的