选择from_tz(CAST('08-mar-202002.05.02.575000000 am'作为时间戳),'CST')在时区'UTC',从DUAL选择_Daylight_Savings;
从DUAL中选择时区'UTC'处的TO_TIMESTAMP('08-mar-1502.05.02.575000000 am');
但是,我得到的所有这些语句都是相同的错误消息。
*操作:确保指定的字段在datetime或interval中。
它转换所有其他时间只是很好,除了夏令时开始和结束在凌晨2点到3点之间。如果我更改为01:00或03:00,它转换时间戳就可以了。
我尝试了几个解决方案,但似乎没有一个对我有效。
'08-mar-2020 02.05.02.575000000 am'
不是时间戳
值,而是字符串。
当您希望将字符串转换为时间戳时,您应该始终包含以下格式:
TO_TIMESTAMP('08-MAR-2020 02.05.02.575000000 AM', 'DD-MON-YYYY HH.MI.SS.FF9', 'NLS_DATE_LANGUAGE = american')
如果要创建带有时区的时间戳
,则应使用
TO_TIMESTAMP_TZ('08-MAR-2020 02.05.02.575000000 AM ???', 'DD-MON-YYYY HH.MI.SS.FF9 TZR', 'NLS_DATE_LANGUAGE = american')
SELECT tzabbrev, tzname, TZ_OFFSET(tzname)
FROM V$TIMEZONE_NAMES tz
where tzabbrev = 'CST'
+--------------------------------------------------------------------------------+
|TZABBREV |TZNAME |TZ_OFFSET(TZNAME)|
+--------------------------------------------------------------------------------+
|CST |America/Atikokan |-05:00 |
|CST |America/Bahia_Banderas |-05:00 |
|CST |America/Belize |-06:00 |
|CST |America/Cambridge_Bay |-06:00 |
|CST |America/Cancun |-05:00 |
|CST |America/Chicago |-05:00 |
|CST |America/Chihuahua |-06:00 |
|CST |America/Coral_Harbour |-05:00 |
|CST |America/Costa_Rica |-06:00 |
|CST |America/Detroit |-04:00 |
|CST |America/El_Salvador |-06:00 |
|CST |America/Fort_Wayne |-04:00 |
|CST |America/Guatemala |-06:00 |
|CST |America/Havana |-04:00 |
|CST |America/Hermosillo |-07:00 |
|CST |America/Indiana/Indianapolis |-04:00 |
|CST |America/Indiana/Knox |-05:00 |
|CST |America/Indiana/Marengo |-04:00 |
|CST |America/Indiana/Petersburg |-04:00 |
|CST |America/Indiana/Tell_City |-05:00 |
|CST |America/Indiana/Vevay |-04:00 |
|CST |America/Indiana/Vincennes |-04:00 |
|CST |America/Indiana/Winamac |-04:00 |
|CST |America/Indianapolis |-04:00 |
|CST |America/Iqaluit |-04:00 |
|CST |America/Kentucky/Louisville |-04:00 |
|CST |America/Kentucky/Monticello |-04:00 |
|CST |America/Knox_IN |-05:00 |
|CST |America/Louisville |-04:00 |
|CST |America/Managua |-06:00 |
|CST |America/Matamoros |-05:00 |
|CST |America/Mazatlan |-06:00 |
|CST |America/Menominee |-05:00 |
|CST |America/Merida |-05:00 |
|CST |America/Mexico_City |-05:00 |
|CST |America/Monterrey |-05:00 |
|CST |America/North_Dakota/Beulah |-05:00 |
|CST |America/North_Dakota/Center |-05:00 |
|CST |America/North_Dakota/New_Salem|-05:00 |
|CST |America/Ojinaga |-06:00 |
|CST |America/Pangnirtung |-04:00 |
|CST |America/Rainy_River |-05:00 |
|CST |America/Rankin_Inlet |-05:00 |
|CST |America/Regina |-06:00 |
|CST |America/Resolute |-05:00 |
|CST |America/Swift_Current |-06:00 |
|CST |America/Tegucigalpa |-06:00 |
|CST |America/Thunder_Bay |-04:00 |
|CST |America/Winnipeg |-05:00 |
|CST |Asia/Chongqing |+08:00 |
+--------------------------------------------------------------------------------+
SYS_EXTRACT_UTC(TO_TIMESTAMP_TZ('08-MAR-2020 02.05.02.575000000 AM ???', 'DD-MON-YYYY HH.MI.SS.FF9 TZR', 'NLS_DATE_LANGUAGE = american'))
TO_TIMESTAMP_TZ('08-MAR-2020 02.05.02.575000000 AM ???', 'DD-MON-YYYY HH.MI.SS.FF9 TZR', 'NLS_DATE_LANGUAGE = american') AT TIME ZONE UTC
如果时间不明确,即夏时制的转换,那么还可以指定它(使用TIMESTAMP文字,因为它更短):
TIMESTAMP '2020-03-08 02.05.02.575 America/Los_Angeles PDT'
参见带有时区数据类型的时间戳
若要消除时间从标准时间切换到夏时制时边界情况的歧义,请同时使用TZR格式元素和相应的TZD格式元素。TZD格式元素是包含夏时制信息的时区区域的缩写。例如美国太平洋标准时间的PST和美国太平洋夏时制的PDT。以下规范确保返回夏时制时间值:
TIMESTAMP '1999-10-29 01:30:00 America/Los_Angeles PDT'
在我的一个项目中,我必须将UTC DateTime转换为用户特定的日期和时间。我正在使用xml获取时间偏移量和夏令时参数。 例如offset=“GMT+2”dst=“true” 谢谢,
看来我星期一早上有个案子!!! 正如你们所能看到的,我的本地机器位于东部时区,日光节约已经生效。这可以从下面的“日期”命令中看到。 然后我使用php生成了一个unix时间戳。它应该给出您当前的时间并在1970年1月1日的UTC 0:0:0将其转换为Unix纪元。 我的mysql会话被设置为UTC,我想象1460992469表示为mktime转换为UTC。 问题是转换回est不承认夏令时。谁能帮我指
我做了下面的代码,但我知道它是正确的或不是,请协助我做正确的方式时区转换。 我把UTC日期作为json字符串,转换成用户的时区格式,并显示Android端
我想从JavaGUI到数据库获取startTime和endTime的值。 电脑座位班 Cobadatabase类 这里的问题是,当单击登录按钮时,开始时间显示在我的数据库中的开始时间和结束时间列上。当单击注销按钮时,将在数据库中创建另一个行,该行在starTime和endTime列上都包含endTime。我想知道为什么会这样...
使用以下代码: 我得到 有没有办法从夏时制之后到1:00:00而不经过夏时制之前的1:00:00?