zoukankan      html  css  js  c++  java
  • sqlite3中 timestamp使用

     

    timestamp使用

    一. timestamp两种属性:
    自动初始化: 此行为只在第一次写入数据时,怎么把时间设为当前时间. (DEFAULT CURRENT_TIMESTAMP)
    自动更新: 此行为在修改资料时,会自动帮你把值修改为当前时间. (ON UPDATE CURRENT_TIMESTAMP)

    二. 四种状态:
    由上面两种属性延伸出四种状态
    1. 自动初始化以及自动更新 (timestamp字段的数据默认就是此行为)
    实现sql: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP


    2.只做初始化,更新时不自动更新
    实现sql: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP


    3.只做自动更新,不做初始化
    实现sql: ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP


    4. 什么都不做(建议这种情况,数据类型就使用datetime)

    官方文档的说明

    注:DEFAULT-->DEFAULT CURRENT_TIMESTAMP

          ON UPDATE -->ON UPDATE CURRENT_TIMESTAMP

    在CREATE TABLE语句中,第1个TIMESTAMP列可以用下面的 任何一种方式声明:

    1: 如果定义时DEFAULT 和ON UPDATE 子句都有,列值为默认使用当前的时间戳,并且自动更新。

    2: 如果不使用DEFAULT和ON UPDATE子句,那么它等同于DEFAULT ON UPDATE。

    3: 如果只有DEFAULT子句,而没有ON UPDATE子句,列值默认为当前时间戳但不自动更新。

    4: 如果没用DEFAULT子句,但有ON UPDATE 子句,列默认为0并自动更新。

    5: 如果有一个常量值DEFAULT,该列会有一个默认值,而且不会自动初始化为当前时间戳。如果该列还有一个ON UPDATE 子句,这个时间戳会自动更新,否则该列有一个默认的常量但不会自动更新。

    下面这些语句是等效的:

    CREATE TABLE t (ts TIMESTAMP);
    CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                                 ON UPDATE CURRENT_TIMESTAMP);
    CREATE TABLE t (ts TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                                 DEFAULT CURRENT_TIMESTAMP);

    ts TIMESTAMP DEFAULT 0 //只是给一个常量(注:0000-00-00 00:00:00)

    可以在TIMESTAMP列的定义中包括NULL属性以允许列包含NULL值。例如:

    CREATE TABLE t
    (
      ts1 TIMESTAMP NULL DEFAULT NULL,
      ts2 TIMESTAMP NULL DEFAULT 0,
      ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
    );

    未指定NULL属性,将列设置为NULL,用于将它设置为当前的时间戳。

    注意允许NULL值的TIMESTAMP列不会采用当前的时间戳,除非要么其 默认值定义为CURRENT_TIMESTAMP,或者NOW()或CURRENT_TIMESTAMP被插入到该列内。换句话说,只有使用如下创建,定义为 NULL的TIMESTAMP列才会自动更新:

    CREATE TABLE t (ts NULL DEFAULT CURRENT_TIMESTAMP);
    CREATE TABLE t1 (ts NULL DEFAULT NULL);
    CREATE TABLE t2 (ts NULL DEFAULT '0000-00-00 00:00:00');

    则必须显式插入一个对应当前日期和时间的值。例如:

    INSERT INTO t1 VALUES (NOW());
    INSERT INTO t2 VALUES (CURRENT_TIMESTAMP);
  • 相关阅读:
    RabbitMQ详解(一)——安装
    智能风控平台核心之风控决策引擎(一)
    Redis6详解(一)——概述与安装
    SpringMVC(一)——入门案例
    数据结构与算法(一)——概述
    JDK1.8源码(二)——java.lang.Integer类
    设计模式(一)——概述
    Java基础(五)——String
    first 博客园
    Django
  • 原文地址:https://www.cnblogs.com/W-Kr/p/5443517.html
Copyright © 2011-2022 走看看