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);
sqlite3中 timestamp使用的更多相关文章
- mysql中timestamp的自动生成与更新
转自:mysql中timestamp的自动生成与更新 MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样.1.自动UPDATE 和INSERT 到当前的时间:表:----------- ...
- mysql中TIMESTAMP设置默认时间为当前时间
在我们保存数据进入到数据库中时多半会使用像php之类的脚本来获取一个时间保存到mysql中,其实在mysql可以直接使用TIMESTAMP 数据类型来实现默认类型了,下面一起来看看. 很多时候,为 ...
- 数据库 - SQLite3 中的数据类型
------------------------------ 安装 Sqlite3 和 数据库查看工具: sudo apt-get install sqlite3 sudo apt-get insta ...
- SQLite3中自增主键相关知识总结,清零的方法、INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用
这篇文章主要介绍了SQLite3中自增主键相关知识总结,清零的方法.INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用等,需要的朋友可以参考下 一.SQLite清空表 ...
- MYSQL中TIMESTAMP类型的默认值理解
MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间:表:----------- Table Create Table ...
- Sqlite3中存储类型和数据类型结合文档解析。
sqlite3是个很小的数据库,运行在手机,机顶盒上....那它就不可能像musql,sqlserver那么规范,有很多的数据类型,之前我也以为它定义了很多数据类型,其实不是他就5个存储类,那么多数据 ...
- mysql中Timestamp,time,datetime 区别
一.TIMESTAMP[(M)] 时间戳.范围是’1970-01-01 00:00:00’到2037年. TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间. 如果你不分配一个值, ...
- IOS异步和多线程操作&&在sqlite3中的应用
1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消 ...
- sqlite3中的数据类型
大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的.刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列. Sqlite使用一个 ...
随机推荐
- Mac下破解百度网盘限速(Chrome + Aria2GUI)
基本原理是利用Aria2GUI的多线程下载来达到提速的目的,具体步骤如下: 1.下载Aria2GUI客户端(注意,客户端文件要放入‘应用程序’,否则会报错),使用时注意修改线程数,默认为16,不够用, ...
- IDEA项目添加第三方依赖
1.在项目WEB-INF文件夹下面新建一个lib文件夹并将我们需要的第三方jar包拷贝进去: Ctrl+Shift+Alt+S打开项目配置页面: 选择我们存放jar包的文件夹: 选择我们需要引入目标依 ...
- Anaconda 32在windows下安装gensim
安装Anaconda 2.4以后运行corpora.MmCorpus.serialize的时候出错 换了Anaconda 2.1以后没问题了 原因:Anaconda 2.4的numpy是1.10.1版 ...
- CNN入门讲解-为什么要有最后一层全连接?
原文地址:https://baijiahao.baidu.com/s?id=1590121601889191549&wfr=spider&for=pc 今天要说的是CNN最后一层了,C ...
- 二十九:数据库之SQLAlchemy连接数据库
手写SQL复用性不高,SQL越复杂越容易出bug,而且容易引起SQL注入,所以现在Ibanez使用orm框架将数据库映射为数据模型,这是使用SQLAlchemy 准备工作,安装SQLAlchemy和P ...
- nginx报错:nginx: [emerg] unknown directive in /etc/nginx/conf.d/test.conf:4
nginx报错:nginx: [emerg] unknown directive in /etc/nginx/conf.d/test.conf:4 解决: 第四行出现了 tab 空格 , 换成正常的 ...
- 简单通讯聊天 群聊功能 Windows下的客户端 Linux下的epoll服务器
1 服务器代码 Linux eclipse C++ //======================================================================= ...
- 微信小程序前端支付
原文地址 //index.js Page({ data: { }, //点击支付按钮进行支付 payclick: function () { var t = this; wx.login({ //获取 ...
- Python学习之GIL&进程池/线程池
8.6 GIL锁** Global interpreter Lock 全局解释器锁 实际就是一把解释器级的互斥锁 In CPython, the global interpreter lock, or ...
- python学习之生函数名的理解
4.4.10 函数名的应用 函数名就是一个特殊的变量,后边跟上()之后可以执行函数: 1.作为一个变量使用 def func(): print('123') f1 = func f2 = f1 f1( ...