一. 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);
分享到:
相关推荐
但这种做法在新的版本中被弃用了,建议使用`explicit_defaults_for_timestamp`选项来明确控制`TIMESTAMP`字段的默认行为。 配置`explicit_defaults_for_timestamp`: 在MySQL配置文件(如`my.cnf`或`my.ini`)中,...
需要注意的是,Timestamp并不解决所有并发问题,例如死锁(Deadlock)或者第一读者写者问题(First-Come, First-Served Writer Problem),对于这些情况可能需要使用其他并发控制策略,如乐观锁定(Optimistic ...
ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux 7 ICMP timestamp请求响应漏洞 修复 Traceroute探测漏洞 修复 使用firewall-cmd打开关闭防火墙与端口 linux ...
然而,`TRUNC`函数并不支持`TIMESTAMP`类型,这暗示了在需要精确到秒以下的时间精度时,应当优先考虑使用`TIMESTAMP`。 ### 计算时间差 在计算两个时间点之间的差值时,`TIMESTAMP`类型提供了一个更加直观和方便的...
文章目录Timestamptimestamp.go如何使用 Timestamp path: google/protobuf/timestamp.proto 在 timestamppb 中 Timestamp 包含两个字段 seconds 表示秒 nanos 表示纳秒 message Timestamp { int64 seconds = 1; ...
### Python Timestamp 和 Datetime 之间转换详解 在日常的软件开发工作中,特别是在处理与时间相关的数据时,我们经常会遇到需要将不同的时间格式进行转换的情况。Python 提供了强大的时间处理库,使得时间戳...
关键在于更新语句中包含的`Where`子句,它使用了之前读取到的`TimeStampValue`,确保只更新当前行。如果在并发环境下有多人操作,这个条件能避免脏读问题。执行`ExecuteNonQuery()`方法来执行SQL更新命令,返回值...
`token`、`timestamp`和`sign`这三者是常见的安全机制,用于确保数据的完整性和防止中间人攻击。下面将详细阐述它们的作用和实现方式。 `Token`,通常指访问令牌,是一种身份验证机制。在API交互中,客户端(如移动...
在这种情况下,我们可以使用SimpleDateFormat类来格式化Date类型,然后使用valueOf()方法将格式化后的字符串转换为Timestamp类型,如下所示: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH...
在设置Oracle的Timestamp with Time Zone类型的值时,可以使用`setObject()`方法,传入`ZonedDateTime`对象。在从数据库查询结果获取Timestamp with Time Zone数据时,可以通过`ResultSet.getObject()`方法,然后...
这可以使用Timestamp类型的toString()方法,该方法将Timestamp类型的时间戳转换成String类型的日期字符串。 需要注意的是,在将String类型转换成Timestamp类型时,我们需要确保String类型的日期字符串的格式正确,...
根据提供的标题、描述、标签及部分内容,我们可以了解到这段文本主要涉及Oracle数据库中处理时间戳(`TIMESTAMP`)的相关操作。接下来将详细解释这些内容所包含的关键知识点。 ### 关键知识点解析 #### 1. `...
然后,我们使用 format 方法将 Timestamp 转换为 String,使用 valueOf 方法将 String 转换为 Timestamp。 日期格式 在 Java 中,日期格式可以使用 DateFormat 类的静态方法 getDateInstance 获取。下面是一个简单...
oracle timestamp详解 将常用的转换方法及使用注意事项都罗列出来了
TimeStamp(用java实现时间戳)
Timestamp程序会创建用户指定数量的线程,每一个线程都将执行一个简单的for循环。每次循环都会读取时钟计数器的值并将其保存到一个数组中。每个线程将这些值保存到各自的数组中。 通过观察timestamp的值,程序可以...
本文将详细探讨在Hibernate中处理Timestamp类型字段的一些关键知识点,结合给出的"关于Hibernate中Timestamp类型字段处理的小例子"的标题,我们将深入理解Timestamp类型的特性和在Hibernate中的使用。 1. **...
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...
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(); /...
其专业版的更新迭代,不仅保持了原有的高质量服务,还在不断倾听用户反馈的基础上进行改进,力求满足更多元化的使用场景。无论是专业人士还是普通用户,都可以从中找到适合自己的功能,让每一张照片都承载着丰富的...