标签: timezone

Sybase 如何存储日期时间信息?

我们有一个 Sybase 数据库,当前在某些表中存储日期时间值。如果我们将装有 Sybase 数据库的服务器移动到位于另一个时区的另一个国家/地区,数据库中的日期时间值是否会以不同的方式表示?

换句话说,请考虑以下场景:

Sybase 数据库在时区 +2:00 运行。

从我位于时区 +1:00 的 Java 应用程序中,它将 1970 年 1 月 1 日 1:00 写入数据库,这是应用程序时区中的纪元 0。

preparedStatement.setTimestamp(3, new Timestamp(0));
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 SQL Workbench/J 客户端(时区 +1:00)查询数据库时,我看到

1970-01-01 01:00:00
Run Code Online (Sandbox Code Playgroud)

在我的桌子上。事实上,无论我将计算机时钟更改为哪个时区,SQL Workbench/J 客户端始终1970-01-01 01:00:00从数据库中读取数据。

位于时区 +3:00 的另一个 Java 客户端读取的值与

1970-01-01 01:00:00
Run Code Online (Sandbox Code Playgroud)

翻译为纪元-7200000-2:00客户的时区!

那么回到我原来的问题,Sybase 是否将日期时间值存储为字符串或纪元?我没有可以进行实验的免费 Sybase 服务器,那么当我们将服务器移动到另一个时区不同的国家/地区时,我们会发生什么情况呢?

我们使用的类型是“datetime”,例如:

CREATE TABLE "dbo"."whatever" (eventDate datetime NOT NULL);
Run Code Online (Sandbox Code Playgroud)

sybase jdbc java timezone datetime

4
推荐指数
1
解决办法
5455
查看次数

将 postgres 时间戳限制为“一天结束”?

考虑到一个指定的表bananas
一个timestamp without time zone名为列end_time
一些 psql客户有set timezone to 'UTC'
其他 psql客户端有set timezone to 'US/Eastern'
服务器配置有timezone = 'UTC'postgresql.conf

如何编写支票约束bananas.end_time以确保end_time始终是一天的结束,定义为“美国/东部”一天的第 23 小时 59 分 59 秒?

我试过:

alter table bananas
add constraint ck_end_time_is_end_of_day
check (
  23 = date_part('hour', end_time at time zone 'UTC' at time zone 'US/Eastern')
  and 59 = date_part('minute', end_time at time zone 'UTC' at time zone …
Run Code Online (Sandbox Code Playgroud)

postgresql constraint datatypes timestamp timezone

4
推荐指数
1
解决办法
3329
查看次数

Postgres中奇怪的UTC偏移时区解析

Postgres 在解析时区时表现出一些奇怪的行为,或者我只是不明白它是如何工作的。

文档

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST';
Result: 2001-02-16 18:38:40
Run Code Online (Sandbox Code Playgroud)

该示例采用 EST (UTC-5) 中指定的时间戳并将其转换为 MST (UTC-7) 中的本地时间。

似乎意味着“MST”可以与“UTC-7”互换,但行为与您期望的相反。

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'UTC-7';
Result: 2001-02-17 08:38:40
Run Code Online (Sandbox Code Playgroud)

它没有使用时区“UTC-7”,而是使用时区“UTC+7”,相差 14 小时。

使用 ISO 8601 时区符号也会产生与预期结果相反的结果:

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-7';
Result: 2001-02-17 08:38:40

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-07';
Result: 2001-02-17 08:38:40

SELECT TIMESTAMP …
Run Code Online (Sandbox Code Playgroud)

postgresql timezone

4
推荐指数
1
解决办法
1465
查看次数

如果 UTC 始终可用,则使用不带时区的时间戳有任何缺点

timestamp with time zone对比timestamp without time zone

我知道这timestamptz与在数据库中保存值时添加的时间戳无时区+(时区差)相同。也就是说,在数据库中,当存储时,它们都是无法区分的。

比如说,我决定只使用timestamp without time zone,即使是在推荐的情况下timestamp with time zone。我网站的用户可以记住,我和他们将始终使用 UTC 进行操作,即使我们碰巧处于不同的时区,效果会timestamp without time zone很好且没有缺陷吗?

postgresql timestamp timezone

3
推荐指数
1
解决办法
4024
查看次数

为什么 SQL Server 中没有“夏令时”时区?

我正在将一些 datetimeoffset 列的时间从 UTC 转换为东部时间。我通过命令执行此操作

UPDATE MyTable SET MyColumn = MyColumn AT TIME ZONE 'Eastern Standard Time'
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常(时间提前了 4 小时,现在有 -04:00 偏移量,正是我想要的),但后来我意识到这不是 EST,现在是 EDT。

SELECT * FROM sys.time_zone_info 
Run Code Online (Sandbox Code Playgroud)

给我一个时区列表,但没有“东部夏令时间”,只有“东部标准时间”。有一个“is_current_dst”列似乎是正确的。但据我所知,谈论时区“东部标准时间”是否处于 DST 是没有任何意义的。东部标准时间意味着它不是夏令时。“东部夏令时”的意思是夏令时。对我来说,这似乎是获得一个动物列表,列表中没有“Dog”和“Cat”,只有“Dog”,带有“isCat”标志!

我很困惑为什么时区被称为“东部标准时间”(以及为什么我上面的更新语句将时间转换为东部夏令时间(又名 UTC -04:00)。

时区名称是否不正确,它实际上应该只是“东部时间”之类的内容,并带有标志告诉当前是 EST 还是 EDT?

或者我只是完全困惑?

sql-server timezone

3
推荐指数
1
解决办法
3233
查看次数

我在 MySQL 的 sys 数据库中找不到时区表

对于我的 Django 应用程序,我必须将时区设置为 UTC,但是我无法设置它,因为我在系统数据库中找不到任何与时区相关的表。

我怎么得到那些?此处https://dev.mysql.com/downloads/timezones.html 中可用的脚本仅与加载表中的数据有关,而与创建它们无关。

  • MySQL 版本:5.7
  • 操作系统:Windows

mysql timezone mysql-5.7

2
推荐指数
1
解决办法
4559
查看次数

使用 now()::timestamp 函数存储的时间存储错误值

我将 AWS RDS 用于带有 PGAdmin 的 PostgreSQL 11 数据库。我存储每一行​​的创建日期,now()::timestamp用于存储没有时区的日期和时间。问题是存储的时间永远不是我想要的值 ( UTC+05:30)。

如果我设定的参数timezoneUTC在RDS,然后储存时间的背后是印度时间5:30小时,但如果我设置UTC + 05:30,它存储时间背后要么11小时或1小时以上,这种情况随机随机行。我没有改变任何其他东西,只是这个timezone参数。

我搜索了很多,但没有找到任何类似的答案。

postgresql timezone

2
推荐指数
1
解决办法
1562
查看次数

Postgres 自动插入带时区的时间戳(印度)

有没有办法在插入查询时自动插入带区域的时间戳?(就像 id 自动递增,因为我不想在 sql 中传递参数作为时间,如果我们使用 zone,则每个地方都相同)。pg 9.1 版。以及如何使用所需的时间格式?

postgresql timestamp postgresql-9.1 timezone

1
推荐指数
1
解决办法
1万
查看次数

错误的 EST 时区而不是 Oracle 中的 EDT

我在 Oracle 数据库中没有得到正确的时区。该问题仅从 2021 年开始发生。请查看两个相同的查询 - 第一个是 2020 年,第二个是 2021 年。第一个正确地将时区指定为 EDT;第二个错误地给出了 EST。如何解决这个问题?

SELECT 
   TO_CHAR(FROM_TZ(TIMESTAMP '2020-08-01 00:00:00', 'America/New_York'),'TZD') AS TIMEZONE 
FROM DUAL ;

---
EDT

SELECT 
   TO_CHAR(FROM_TZ(TIMESTAMP '2021-08-01 00:00:00', 'America/New_York'),'TZD') AS TIMEZONE 
FROM DUAL ;

---
EST
Run Code Online (Sandbox Code Playgroud)

oracle timezone

1
推荐指数
1
解决办法
527
查看次数

Oracle 10 中的时区

我有一个应用程序,它使用 UTC(协调世界时)将其时间戳存储在 Oracle 中。另一个应用程序从数据库中读取这些时间戳,但没有方便的方法将时间戳自动转换为另一个时区(从该应用程序中)。是否可以调整 Oracle 中的会话设置以返回 SELECT 查询的时区调整时间戳?

oracle timezone

0
推荐指数
1
解决办法
1888
查看次数

SQL Server 上的时钟更改

随着欧洲的时钟变化 - SQL Server 如何处理时钟变化?是否存在与时钟更改相关的已知问题?

sql-server timezone time

0
推荐指数
1
解决办法
3396
查看次数