sqlite查询空日期类型_sqlite数据类型(时间 日期 ) timestamp 使用

timestamp使用

timestamp两种属性:

自动初始化: 此行为只在第一次写入数据时,怎么把时间设为当前时间. (DEFAULT CURRENT_TIMESTAMP)

自动更新: 此行为在修改资料时,会自动帮你把值修改为当前时间. (ON UPDATE CURRENT_TIMESTAMP)

自动初始化

第一次写入数据时把时间设为当前时间

tiims1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP

自动更新

每一次写入数据时把时间设为当前时间

ON UPDATE CURRENT_TIMESTAMP

timestamp两种结合

系统默认 自动初始化以及自动更新

TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

四种状态:由上面两种属性延伸出四种状态

自动初始化以及自动更新

timestamp字段的数据默认就是此行为

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

只做初始化,更新时不自动更新

ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

只做自动更新,不做初始化

ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

什么都不做

datetime

下面这些语句是等效的:

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 TABLEt

(

ts1TIMESTAMP NULL DEFAULT NULL,

ts2TIMESTAMP NULL DEFAULT 0,

ts3TIMESTAMP 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支持的数据类型:

NULL、INTEGER、REAL、TEXT、BLOB

但是,sqlite3也支持如下的数据类型smallint16位整数integer32位整数decimal(p,s) p是精确值,s是小数位数float32位实数double64位实数char(n) n长度字符串,不能超过254varchar(n) 长度不固定最大字符串长度为n,n不超过4000

graphic(n) 和char(n) 一样,但是单位是两个字符double-bytes,n不超过127(中文字)

vargraphic(n) 可变长度且最大长度为n

date 包含了年份、月份、日期

time 包含了小时、分钟、秒timestamp 包含了年、月、日、时、分、秒、千分之一秒

sqlite3支持的函数

【1】日期函数

datetime() : 产生日期和时间

date(): 产生日期

time():产生时间

strftime():对以上3个函数产生的日期和时间进行格式化

用法实例:

1、SELECT date('2011-9-9','+1 day','+1 year'); 结果是 2010-09-10

2、SELECT datetime('now

你可能感兴趣的:(sqlite查询空日期类型)