2018年1月16日 星期二

Mysql table 設定自動日期值

MySQL CURRENT_TIMESTAMP in milliseconds


DROP TABLE TEST_DATETIME;
CREATE TABLE TEST_DATETIME
    (
        ID INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
        MEMO VARCHAR(20) COMMENT '備註',
        CREATE_DATE DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6),
        UPDATE_DATE DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
        PRIMARY KEY (ID)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='測試DATETIME';



    INSERT INTO TEST_DATETIME (MEMO) VALUES ('T'); -- 請多按幾次

    UPDATE TEST_DATETIME SET MEMO = 'Y' WHERE ID = 3

    -- 觀察時間
    SELECT * FROM TEST_DATETIME



    -- 自己看差別
    SELECT CURRENT_TIMESTAMP
    SELECT CURRENT_TIMESTAMP(3)
    SELECT CURRENT_TIMESTAMP(6)



但搭配 hibernate 時,仍需要額外設定,Hibernate 程式寫入時,才會自動寫入時間


在 hbm 檔裡,欄位需額外加入 insert="false" update="false"

     <property name="createDate" type="java.util.Date" insert="false" update="false">
          <column name="CREATE_DATE" />
     </property>
     <property name="updateDate" type="java.util.Date" insert="false" update="false">
          <column name="UPDATE_DATE" />
    </property>