如何更改时区并返回上一个时区

时间:2016-09-13 02:49:12

标签: sql postgresql timezone connection mybatis

我的项目库版本是 mybatis 3.1 postgresql 9.2

我想在选择查询之前更改连接时区。并回到时区。

首先,我试试吧。在mapper xml中设置时区。

set timezone = 'Asia/Seoul' ;
select now();
set timezone = 'UTC';

我认为如果选择查询时发生错误,则Timezone不会设置为UTC。 如果时区未设置为UTC,则对不同请求的查询将为utc time。

第二,我试试看。春天DI注入sqlsession。

sqlsession.selectOne(namespace.setTimezone, 'Asia/Seoul');
sqlsession.selectOne(namespace.selectNow);
sqlsession.selectOne(namespace.setTimezone, 'UTC');

我想。三个sqlsession这可能不是同一个连接。

如何更改时区并返回上一个时区? 如果我处理事务,三个sqlsession发生的是同一个连接吗?

1 个答案:

答案 0 :(得分:0)

使用交易。

mybatis是值得的,它将支持数据库事务,并且它必须对一个事务中的所有语句使用相同的连接。

我不知道mybatis是否可以执行此操作,但在PostgreSQL中,您可以使用SET LOCAL仅在事务持续时间内更改参数。它将在交易结束时自动重置。