问题是简短的:如果我已经有一个列时间戳没有时区的数据,如果我设置类型时间戳与时区,postgresql做什么这个数据?PostgreSQL更改类型时间戳没有时区 - >与时区
39
A
回答
38
它保留在本地时间的电流值,并设置时区,以你的本地时间的偏移:
create table a(t timestamp without time zone, t2 timestamp with time zone);
insert into a(t) values ('2012-03-01'::timestamp);
update a set t2 = t;
select * from a;
t | t2
---------------------+------------------------
2012-03-01 00:00:00 | 2012-03-01 00:00:00-08
alter table a alter column t type timestamp with time zone;
select * from a;
t | t2
------------------------+------------------------
2012-03-01 00:00:00-08 | 2012-03-01 00:00:00-08
按照手册Alter Table:省略
如果[的使用条款是] ,默认转换与从旧数据类型转换为新转换的赋值相同。
根据无时间区和时间戳与时区时间戳之间的手册Date/Time types
换算通常假定时间戳而不时区值应取或作为给定当地时间时区。可以使用
AT TIME ZONE
为转换指定不同的时区。
+0
是的。此行为与从不带时区的时间戳到具有时区的时间戳一起转换完全相同。如果你想要一些不同的东西,你可以使用'ALTER COLUMN column TYPE type'使用
12
明确指定时区会更好。假设您的时间戳记应该在UTC(但没有时区),那么您应该警惕客户端或服务器的时区可能会在这里搞乱一切。相反写:
ALTER TABLE a ALTER COLUMN t TYPE TIMESTAMP WITH TIME ZONE USING t AT TIME ZONE 'UTC'
相关问题
- 1. django - 时间戳随机更改时区
- 2. psycopg2处理时间戳没有时区
- 3. 休眠映射postgresql“没有时区的时间戳”?
- 4. 的PostgreSQL:42883操作符不存在:没有时间戳时区
- 5. postgresql:无时区时间戳的时区敏感查询
- 6. 带时区时间戳的时间戳
- 7. GMT时区当前时间戳与当地时区当前时间戳有什么区别?
- 8. 将日期和时区与Postgresql中的时间戳比较
- 9. 如何在PHP中为现有时间戳更改时区?
- 10. JPQL和时间戳与时区
- 11. 与UNIX时间戳和时区
- 12. 时间戳和时区
- 13. 时间戳/时区/ PHP/MySQL
- 14. PostgreSQL中具有不同时区的时间戳
- 15. PostgreSQL:如何测试时间戳是否有时区?
- 16. PostgreSQL中的时间戳操作 - 带小时/时区的问题
- 17. ERROR:合并类型BYTEA和时间戳没有时区不能匹配
- 18. 如何将没有时区的时间转换为没有时区的时间戳?
- 19. PostgreSQL:将没有时区的时间戳转换为特定的时区不起作用
- 20. 帐户时区时,UNIX时间戳
- 21. 根据浏览器时区更改jenkins时间戳
- 22. 如何将时间戳更改为我在mysql中的时区?
- 23. 在Postgresql中检索带时区的时间戳 - 简单
- 24. 保留来自postgresql时间戳的时区信息go
- 25. Postgresql选择带时区的时间戳,但忽略秒
- 26. 比较PostgreSQL的时间戳的SQL查询时区在Django
- 27. 更改时区
- 28. 更改时区
- 29. ç时间戳区别
- 30. Java - 没有得到一个特定时区的时间戳
你是对的,但直到我启动我的应用程序/数据库/无论什么,答案可能会出现。 – gyorgyabraham 2012-03-19 15:23:54
@a_horse_with_no_name因为“它曾经工作过”是一个非常糟糕的方式来知道它会做什么每次! – 2012-03-20 10:51:15
@couling:所以你暗示如果多次运行同一组语句会产生不同的结果?即使所有输入参数都相同?在这种情况下,dbhenur的答案不能证明任何事情,因为根据你运行该声明,一次不能保证它下次将以相同的方式工作。 – 2012-03-20 11:44:04