Mysql中timestamp应用详解版权声明

原创
小哥 3年前 (2022-11-11) 阅读数 46 #大杂烩

前言:时间戳(timestamp),a, 完整的、 可验证数据,通常是唯一标识某一时刻的一系列字符。使用数字签名技术生成的数据, 签名的对象包括原始文件信息, 签名参数, 签名时间等信息。广泛用于知识产权保护, 合同签字, 金融账户, 电子报价投标, 股票交易等。

一、MySQL表示当前时间的方法:

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP()

NOW()

LOCALTIME

LOCALTIME()

LOCALTIMESTAMP

LOCALTIMESTAMP()

二、关于TIMESTAMP和DATETIME的比较

完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],可分为两部分:date部分和time部分,其中,date部分对应于“YYYY-MM-DD”,time部分对应于“HH:MM:SS[.fraction]”。对于date字段,它只支持date零件,如果插入time部分内容,它将丢弃部分内容,并提示a。warning。

如下:

mysql> create table test(id int,hiredate date); Query OK, 0 rows affected (0.01 sec)

mysql> insert into test values(1,20180109000000); Query OK, 1 row affected (0.00 sec)

mysql> insert into test values(1,20180109104400); Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warning; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near warning at line 1 mysql> select * from test; +------+------------+ | id | update | +------+------------+ | 1 | 2018-1-09| | 2 | 2018-1-09| +------+------------+ 2 rows in set (0.00 sec)

注意:第一个没有提示warning原因在于time部分都是0

datetime

  1. 占用8个字节

  2. 允许为空值,可以自定义。系统不会自动修改其值。

  3. 实际格式存储(Just stores what you have stored and retrieves the same thing which you have stored.)

  4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

  5. 可以在中指定datetime使用字段的值。now()变量自动插入系统的当前时间。

结论:datetime该类型适合用于记录数据的原始创建时间,因为无论您如何更改记录中其他字段的值,datetime除非手动更改,否则字段的值不会更改。

timestamp

  1. 占用4个字节

  2. 允许空值,但不允许自定义值,因此空是没有意义的。

  3. TIMESTAMP值不能早于1970或晚于2037。这表示日期,例如。1968-01-01虽然DATETIME或DATE值有效,但TIMESTAMP该值无效,如果分配给这样的对象,将被转换。0。

4.值以UTC格式化保存( it stores the number of milliseconds)

5.时区转化 ,存储时转换当前时区,检索时转换回当前时区。

  1. 默认值为CURRENT_TIMESTAMP(),实际上是当前系统时间。

  2. 数据库会自动修改其值,因此在插入记录时不需要指定该值。timestamp字段名称和timestamp字段的值,在设计表时只需要添加一个。timestamp插入后,字段值将自动更改为当前系统时间。

  3. 默认情况下,当稍后修改表中的记录时,相应的记录timestamp该值将自动更新为当前系统时间。

  4. 必要时可设置timestamp不自动更新。通过设置DEFAULT CURRENT_TIMESTAMP 可以实现。

TIMESTAMP和DATETIME同一点:

两者都可以用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。

TIMESTAMP和DATETIME不同点:

两者以不同的方式存储。

对于TIMESTAMP,它将客户端从当前时区插入的时间进行转换。UTC(世界标准时间)存储。查询时,它将转换为客户端的当前时区以供返回。

而对于DATETIME,基本上不做任何更改,就像输入和输出一样。

两者可以存储不同的时间范围。

timestamp可存储的时间范围为:1970-01-01 00:00:01.000000 到 2038-01-19 03:14:07.999999。

datetime可存储的时间范围为:1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999。

TIMESTAMP的变体

1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
创建新记录和修改现有记录时,将刷新此数据列。

2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP
创建新记录时将此字段设置为当前时间,但以后修改时不要刷新。

3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
创建新记录时将此字段设置为。0,稍后修改时刷新。

4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP
创建新记录时将此字段设置为。给定值,稍后修改时刷新。

指定日期值时,请注意某些缺陷:

1,允许将值指定为字符串的松散格式被欺骗。例如,由于“:“分离器的品牌。
用,值10:11:12它可能看起来像时间值,但如果在日期中使用,上下文将是
对于解释年份2010-11-12。值10:45:15将被改造0000-00-00,因为45
不是法定月份。

2、以2比特数指定的年值是模糊的,因为世纪未知。MySQL使用以下规则
解释2位年值: 在00-69转换范围的年值2000-2069。 在范围70-99年价值
换到1970-1999。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门