【问题标题】:Is there an SQL function to convert the time zone to local time (LDT)?是否有将时区转换为本地时间 (LDT) 的 SQL 函数?
【发布时间】:2020-10-24 11:21:54
【问题描述】:

我对 SQL 很陌生,并尝试使用以下命令从数据库(飞行)中提取数据表:

select 

flight.FLT_NBR,
flight.LEG_NBR,
flight.LEG_TAIL_NBR,
flight.LEG_IATA_ORIG_CD as FLT_SCHD_ORIG_ARPT_CD,
flight.LEG_IATA_DEST_CD as FLT_SCHD_DEST_ARPT_CD,
flight.SCHD_ARR_TMSTP as Scheduled_Arrival,
flight.ACTL_ARR_TMSTP AS Actual_Arrival,
flight.SCHD_DPRT_TMSTP as Scheduled_Departure,
flight.ACTL_DPRT_TMSTP AS Actual_Departure,


from home/tulips/FT_FLIGHT_LEG flight

现在的问题是有多个国家的出发地和目的地的时间不同。如何为所有国家/地区合并相同的时区?我尝试使用命令 as time zone 'UTC' 如下所示,但它不起作用...可能是我在错误的地方添加它?

select 

flight.FLT_NBR,
flight.LEG_NBR,
flight.LEG_TAIL_NBR,
flight.LEG_IATA_ORIG_CD as FLT_SCHD_ORIG_ARPT_CD,
flight.LEG_IATA_DEST_CD as FLT_SCHD_DEST_ARPT_CD,
flight.SCHD_ARR_TMSTP as Scheduled_Arrival as time zone 'UTC',
flight.ACTL_ARR_TMSTP AS Actual_Arrival as time zone 'UTC',
flight.SCHD_DPRT_TMSTP as Scheduled_Departure as time zone 'UTC',
flight.ACTL_DPRT_TMSTP AS Actual_Departure as time zone 'UTC',


from home/tulips/FT_FLIGHT_LEG flight

请帮助我为所有 Scheduled_Arrival、Actual_Arrival、Scheduled_Departure 和 Actual_Departure 设置一个时区

【问题讨论】:

  • SQL Server 上没有“本地”时区,除非您指的是服务器的本地时区;实例不知道客户端所在的时区。如果您需要转换时间,您需要将时区从客户端传递给实例(然后更改时间)或(我更喜欢)让应用程序根据客户端时区调整时间。当然,这假设所有时间都存储为 UTC 或 datetimeoffset 并带有适当的时区偏移量。
  • @Larnu.. 感谢您的输入..实际上我不确定是否所有时间都存储为 UTC,所以如果我将时间设置为 UTC 而不是 LDT,我会对我的数据时序。我尝试像这样(stackoverflow.com/questions/16872007/…)在 stackoverflow 中进行查询搜索,但无法在我的查询中实现这一点。谢谢让我也更新我的问题

标签: sql sql-server database timezone


【解决方案1】:

你想要的表达式是at time zone,而不是as time zone

为了使用它,您需要知道原始datetime 值代表的时区。例如,我在澳大利亚悉尼有一个 SQL 服务器,所以getdate() 将返回我的本地日期和时间。但是,要将其转换为 UTC,我必须首先通知 SQL 该值以 AUS 东部标准时间开始,然后通过将 at time zone 表达式链接在一起来要求它将其转换为 UTC。像这样:

select getdate() at time zone 'AUS Eastern Standard Time' at time zone 'UTC' 

如果您不知道原始 datetime 值的时区,则 SQL 无法知道如何将其更改为不同时区的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2019-03-09
    相关资源
    最近更新 更多