2

オラクルでは、この日付を2012-07-0311:38:41からunix_timestampに変換します。

    select (to_date('2012-07-03 11:38:41','YYYY-MM-DD HH24:MI:SS') -
    to_date('1970-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'))*86400 as unix_timestamp
    from dual
SQL> /

UNIX_TIMESTAMP
--------------
    1341315521

しかし、mysqlサーバーで同じことを試してみると

select UNIX_TIMESTAMP('2012-07-03 11:38:41')
1341311921

サーバー設定は次のようなものです

**mysql**> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2012-07-26 15:27:31 |
+---------------------+
1 row in set (0.00 sec)

**Unix** >Thu Jul 26 15:27:56 BST 2012

**oracle**>select current_timestamp from dual;

CURRENT_TIMESTAMP
------------------------------------
26-JUL-12 15.27.16.967258 +01:00

oracleとmysqlが同じ値を取得するようにするにはどうすればよいですか?

4

2 に答える 2

1

表示する2つの値の差は、3600秒、つまり1時間です。

ほとんどの場合、2つのサーバーのタイムゾーン設定は1時間異なります。

mySQLサーバーのタイムゾーン情報については、https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.htmlを参照してください。Oracleによるタイムゾーンの処理に関する詳細情報を次に示します。

于 2012-07-26T11:58:28.477 に答える
1

このトリックunix_timestamp(cast(sys_extract_utc(systimestamp))を日付として使用しました

そして、unix_timestampという関数も作成しました

create or replace
function unix_timestamp(in_date date)
return number DETERMINISTIC PARALLEL_ENABLE AS
l_date date;
begin
return trunc((in_date -to_date ( '01-jan-1970', 'dd-mon-yyyy' ))*86400);
end;
/
于 2012-07-31T04:12:13.240 に答える