显示oracle中本地时间的默认时间戳

时间:2018-02-23 05:12:50

标签: oracle timestamp

我创建了一个包含created_time列的表,其默认时间为systimestamp。 当我向其插入一行时,时间显示我的当地时间。 23-02-18 08:49:05.430419000 AM

但是当我从双重查询中选择systimstamp时,它显示的是GMT 23-02-18 05:11:04.225141000 AM +00:00

如何确保默认时间戳也考虑GMT?

CREATE TABLE TS_TEST (
MY_NAME VARCHAR2(100),
created_time TIMESTAMP(6) default CURRENT_TIMESTAMP
);
insert into TS_TEST (MY_NAME) Values ('george');

我希望created_time列应始终为GMT

2 个答案:

答案 0 :(得分:3)

检查您的代码,然后您应该看到问题。您说“默认时间为systimestamp ”但您的代码为default CURRENT_TIMESTAMP

SYSTIMESTAMPCURRENT_TIMESTAMP

不同
  • SYSTIMESTAMP将当前日期/时间作为TIMESTAMP WITH TIME ZONE返回到数据库服务器操作系统的时区(不是DBTIMEZONE!)。

  • CURRENT_TIMESTAMP将当前日期/时间日期作为TIMESTAMP WITH TIME ZONE返回当前用户会话时区(可能随时更改)。

  • LOCALTIMESTAMP在当前用户会话时区返回当前日期/时间日期TIMESTAMP(没有时区信息)。

我会推荐这个:

CREATE TABLE TS_TEST (
   MY_NAME VARCHAR2(100),
   created_time TIMESTAMP(6) default SYS_EXTRACT_UTC(SYSTIMESTAMP)
);

或使用created_time TIMESTAMP(6) WITH TIME ZONE default SYSTIMESTAMP

答案 1 :(得分:0)

class Input extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: "hello"
    };
  }

  onFocus = e => {
    console.log(e.target.id);
    console.log(e.target.selectionStart); // receiving only 0 here
  };

  onChange = e => {
    this.setState({
      value: e.target.value
    });
  };

  render() {
    return (
      <input
        id="my-input"
        onChange={this.onChange}
        value={this.state.value}
        onFocus={this.onFocus}
      />
    );
  }
}