• 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被插入到该列内。换句话说,只有使用如下创建,定义为 NULLTIMESTAMP列才会自动更新:

    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);
  • 相关阅读:
    微信公众号迁移配置注意点
    关于memcache 命令查看和 Telnet
    centOS 安装(光安装 和 u盘安装)
    CentOS删除自带的java,安装新java
    ubuntu常用命令
    ubuntu 的挂起与休眠
    saiku应用的调试
    数据挖掘123
    unbutu 安装java教程
    workbench的schema讲解一:(维度dimension设置的基本内容)
  • 原文地址:https://www.cnblogs.com/gm-lotus/p/3410502.html
Copyright © 2020-2023  润新知