sql >> データベース >  >> RDS >> Mysql

2038-01-19以降のMySQLfrom_unixtime?

    回避策は、DATE_ADDを使用することです。 、しかし、パフォーマンス面でどのように動作するかはわかりません:

    SELECT DATE_ADD(FROM_UNIXTIME(0), INTERVAL 2147483647 SECOND); //2038-01-19 04:14:07
    SELECT DATE_ADD(FROM_UNIXTIME(0), INTERVAL 2147483648 SECOND); //2038-01-19 04:14:08
    ...
    SELECT DATE_ADD(FROM_UNIXTIME(0), INTERVAL 4147483647 SECOND); //2101-06-06 07:47:27
    

    だから今のところ、私は使用しています

    ...
    CASE 
      WHEN `javaTimeStampColumn` > 2147483647 THEN
        CONVERT_TZ(DATE_ADD(FROM_UNIXTIME(0), INTERVAL `javaTimeStampColumn`/1000 SECOND),'+00:00','+00:00')
      ELSE  
        CONVERT_TZ(FROM_UNIXTIME(`javaTimeStampColumn`/1000), '+00:00','+00:00')
    END as ts
    FROM table
    ...
    

    これにより、パフォーマンスへの影響があれば最小限に抑えることができます。




    1. MySQLでSQLインジェクションを実際に引き起こすことができる文字はどれですか?

    2. FOREIGN KEYがある場合とない場合のREFERENCESの使用の違いは?

    3. oracle diff:2つのテーブルを比較する方法は?

    4. OracleDatabaseのPL/SQLパッケージの概要