`

timestamp使用

SQL 
阅读更多

一. 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);
分享到:
评论

相关推荐

    MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    但这种做法在新的版本中被弃用了,建议使用`explicit_defaults_for_timestamp`选项来明确控制`TIMESTAMP`字段的默认行为。 配置`explicit_defaults_for_timestamp`: 在MySQL配置文件(如`my.cnf`或`my.ini`)中,...

    使用TimeStamp控制并发问题示例

    需要注意的是,Timestamp并不解决所有并发问题,例如死锁(Deadlock)或者第一读者写者问题(First-Come, First-Served Writer Problem),对于这些情况可能需要使用其他并发控制策略,如乐观锁定(Optimistic ...

    ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 linux 7

    ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux 7 ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux ...

    oracle中TIMESTAMP与DATE比较

    然而,`TRUNC`函数并不支持`TIMESTAMP`类型,这暗示了在需要精确到秒以下的时间精度时,应当优先考虑使用`TIMESTAMP`。 ### 计算时间差 在计算两个时间点之间的差值时,`TIMESTAMP`类型提供了一个更加直观和方便的...

    【源码阅读】 protobuf 中的 timestamp 包

    文章目录Timestamptimestamp.go如何使用 Timestamp path: google/protobuf/timestamp.proto 在 timestamppb 中 Timestamp 包含两个字段 seconds 表示秒 nanos 表示纳秒 message Timestamp { int64 seconds = 1; ...

    python timestamp和datetime之间转换详解

    ### Python Timestamp 和 Datetime 之间转换详解 在日常的软件开发工作中,特别是在处理与时间相关的数据时,我们经常会遇到需要将不同的时间格式进行转换的情况。Python 提供了强大的时间处理库,使得时间戳...

    C#更新SQLServer中TimeStamp字段(时间戳)的方法

    关键在于更新语句中包含的`Where`子句,它使用了之前读取到的`TimeStampValue`,确保只更新当前行。如果在并发环境下有多人操作,这个条件能避免脏读问题。执行`ExecuteNonQuery()`方法来执行SQL更新命令,返回值...

    API接口设计之token、timestamp、sign

    `token`、`timestamp`和`sign`这三者是常见的安全机制,用于确保数据的完整性和防止中间人攻击。下面将详细阐述它们的作用和实现方式。 `Token`,通常指访问令牌,是一种身份验证机制。在API交互中,客户端(如移动...

    Timestamp与Date互转.docx

    在这种情况下,我们可以使用SimpleDateFormat类来格式化Date类型,然后使用valueOf()方法将格式化后的字符串转换为Timestamp类型,如下所示: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH...

    Oracle Timestamp with Time zone & java

    在设置Oracle的Timestamp with Time Zone类型的值时,可以使用`setObject()`方法,传入`ZonedDateTime`对象。在从数据库查询结果获取Timestamp with Time Zone数据时,可以通过`ResultSet.getObject()`方法,然后...

    java中将string类型转换成timestamp类型

    这可以使用Timestamp类型的toString()方法,该方法将Timestamp类型的时间戳转换成String类型的日期字符串。 需要注意的是,在将String类型转换成Timestamp类型时,我们需要确保String类型的日期字符串的格式正确,...

    oracle --timestamp

    根据提供的标题、描述、标签及部分内容,我们可以了解到这段文本主要涉及Oracle数据库中处理时间戳(`TIMESTAMP`)的相关操作。接下来将详细解释这些内容所包含的关键知识点。 ### 关键知识点解析 #### 1. `...

    Date、String、Timestamp之间的转换

    然后,我们使用 format 方法将 Timestamp 转换为 String,使用 valueOf 方法将 String 转换为 Timestamp。 日期格式 在 Java 中,日期格式可以使用 DateFormat 类的静态方法 getDateInstance 获取。下面是一个简单...

    oracle timestamp详解

    oracle timestamp详解 将常用的转换方法及使用注意事项都罗列出来了

    TimeStamp(用java实现时间戳)

    TimeStamp(用java实现时间戳)

    timestamp_v1.zip_stonetnd_timer_timestamp

    Timestamp程序会创建用户指定数量的线程,每一个线程都将执行一个简单的for循环。每次循环都会读取时钟计数器的值并将其保存到一个数组中。每个线程将这些值保存到各自的数组中。 通过观察timestamp的值,程序可以...

    关于Hinbernate中TimeStamp类型字段处理的小例子

    本文将详细探讨在Hibernate中处理Timestamp类型字段的一些关键知识点,结合给出的"关于Hibernate中Timestamp类型字段处理的小例子"的标题,我们将深入理解Timestamp类型的特性和在Hibernate中的使用。 1. **...

    有关java中的Date,String,Timestamp之间的转化问题

    1. 使用 `Timestamp` 类:`System.out.println(new Timestamp(new java.util.Date().getTime()));`,输出结果包含时分秒。 2. 使用 `java.sql.Date` 类:`System.out.println(new java.sql.Date(new java.util.Date...

    NIOS延时函数使用 timestamp

    11 alt_timestamp_start(); // 开启时间戳服务 12 13 t0 = alt_timestamp(); // 测量时间戳t0 14 usleep(1000); 15 t1 = alt_timestamp(); // 测量时间戳1 16 for(i=0; i; i++); 17 t2 = alt_timestamp(); /...

    Timestamp Camera Pro 时间戳照相机v1.218专业版.rar

    其专业版的更新迭代,不仅保持了原有的高质量服务,还在不断倾听用户反馈的基础上进行改进,力求满足更多元化的使用场景。无论是专业人士还是普通用户,都可以从中找到适合自己的功能,让每一张照片都承载着丰富的...

Global site tag (gtag.js) - Google Analytics