`
fantaxy025025
  • 浏览: 1309489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

DB_MySQL_日期类型讲解_DATETIME_DATE_TIMESTAMP

阅读更多

 

 

  MySQL5的日期类型有三种:DATETIME、DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒。TIMESTAMP还可以精确到毫秒。

  其次还有个共性,就是他们的格式“不严格”,很自由,一般你认为对的格式都可以正确插入到数据库中。

  这里主要解决带时分秒日期的一些常见问题。

  一、IMESTAMP

  1、TIMESTAMP列必须有默认值,默认值可以为“0000-00-00 00:00:00”,但不能为null。

  2、TIMESTAMP列不可以设置值,只能由数据库自动去修改。

  3、一个表可以存在多个TIMESTAMP列,但只有一个列会根据数据更新而改变为数据库系统当前值。因此,一个表中有多个TIMESTAMP列是没有意义,实际上一个表只设定一个TIMESTAMP列。

  4、TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值。当纪录数据发生变化的时候,TIMESTAMP列会自动将其值设定为CURRENT_TIMESTAMP。

  5、TIMESTAMP列创建后的格式是:

  `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  这个语句含义,a字段的默认值是CURRENT_TIMESTAMP,当纪录更新时候,自动将a字段的值设置为CURRENT_TIMESTAMP。

  6、另外,下面的定义从语法角度是对的,但是没有意义,因为该字段的值不可更改,永远只能为默认值。

  `b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

  二、DATETIME

  1、DATETIME列可以设置为多个,默认可为null,可以手动设置其值。

  2、DATETIME列不可设定默认值,这是很多人煞费苦心研究的成果,呵呵!

  3、DATETIME列可以变相的设定默认值,比如通过触发器、或者在插入数据时候,将DATETIME字段值设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到。

  一般建表时候,创建时间用datetime,更新时间用timestamp。

CREATE TABLE user ( 
    id bigint(20) NOT NULL AUTO_INCREMENT, 
    name varchar(20) CHARACTER SET gbk NOT NULL, 
    sex tinyint(1) DEFAULT '1', 
    state smallint(2) DEFAULT '1', 
    createtime datetime NOT NULL, 
    updatetime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (id) 
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

  三、日期最大值范围的问题

  日期最大范围的问题不是绝对的,很多人制定一个说不能查过20XX年,这是扯蛋,根本没这回事。日期的范围等问题与MySQL的运行模式有关。当然这个范围很宽广,足够祖宗十八代用了,不用担心这问题了。

  相反,要注意的问题是,编程语言对日期范围的限制,不同的语言,有不同的限制,这里不做讨论了。

  四、日期格式转换

  1、字符串转日期

select STR_TO_DATE('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')

  2、日期转字符串

select DATE_FORMAT('2010-03-03 16:41:16', '%Y-%m-%d %H:%i:%s')

  五、日期的中年月日时分秒星期月份等获取方法

select TIMESTAMP('2010-03-03 16:41:16'); 
select DATE('2010-03-03 16:41:16'); 
select YEAR('2010-03-03 16:41:16'); 
select MONTH('2010-03-03 16:41:16'); 
select DAY('2010-03-03 16:41:16'); 
select TIME('2010-03-03 16:41:16'); 
select CURTIME(); 
select CURDATE(); 
select CURRENT_DATE; 
select CURRENT_TIME; 
select CURRENT_TIMESTAMP;

  方式很多,这里简单列举一二。

  六、日期的算术运算

  相关的函数很多很多,用法也很简单,一看就会,建议查看MySQL参考手册。

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY); 
                -> '1999-01-02' 
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR); 
                -> '1999-01-01 01:00:00' 
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH); 
                -> '1998-02-28'

  七、日期的大小比较

  拿着日当数字,拿着字符串当日期,呵呵,很简单的。

     and update_time > '2010-03-02 16:48:41' 
     and update_time <= '2010-03-03 16:51:58'

  搞明白这些,参考MySQL指南,日期问题轻松搞定。

 

 

 

 

 

分享到:
评论

相关推荐

    dbmove_sql语句转化.zip_MYSQL_dbmove_oracle

    例如,Oracle的NUMBER可以对应MySQL的DECIMAL或FLOAT,DATE在MySQL中对应的是DATE类型,但Oracle的TIMESTAMP需要转换为MySQL的TIMESTAMP或DATETIME。 2. **DML语句转换**: INSERT、UPDATE和DELETE语句在两系统中...

    mysql课件.ppt

    日期类型包括 DATE、DATETIME、TIMESTAMP 等。 本文介绍了 MySQL 的基本概念、安装和配置、数据库和表的关系、创建数据库和表、备份和恢复数据库等知识点,为读者提供了一个系统的 MySQL 入门教程。

    JAVA和MYsql时间格式格式

    在 MySQL 中,日期时间数据类型主要有 `DATE`, `TIME`, `DATETIME`, 和 `TIMESTAMP`。每种类型都有其特定的存储范围和用途。例如,`DATETIME` 存储日期和时间,格式通常为 'YYYY-MM-DD HH:MM:SS'。当我们插入或查询...

    mysql 教程MYSQL5.0的安装

    日期/时间类型包括DATE、DATETIME、TIMESTAMP、TIME和YEAR,各有不同的存储长度和使用场景。DATE存储日期,DATETIME存储日期和时间,TIMESTAMP用于记录时间戳,TIME仅存时间,YEAR只需一个字节存储年份。 字符串...

    MySQL.docx

    此外,还有Blob和Text类型用于存储大二进制数据和大文本数据,以及日期和时间类型如date、time、datetime和timestamp。 创建数据库的SQL语句是`CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET utf8];`,...

    mysql取得datetime类型的数据,后面会跟个.0的实现方法

    在MySQL数据库中,datetime类型用于存储日期和时间的组合,格式通常为'YYYY-MM-DD HH:MM:SS'。然而,当从MySQL数据库检索datetime数据并传递给Java应用程序时,可能会遇到一个额外的'.0'尾随在时间戳之后,如'2015-...

    mysql入门教程补充版

    日期和时间类型涵盖date、time、datetime、timestamp和year。字符串类型包括固定长度的char和可变长度的varchar,以及文本类型如text和blob。 【操作MySQL数据库】 要使用MySQL,需要先登录数据库,使用`mysql -u ...

    MySQL中.docx

    - 日期和时间:`DATE`、`TIME`、`DATETIME`和`TIMESTAMP`。 - 逻辑值:`BIT`(0或1)。 字段约束有主键约束(`primary key`,确保非空且唯一)、自动增长(`auto_increment`,常用于ID字段)和非空及唯一约束(`NOT...

    MYSQL基础教程.pptx

    MySQL提供了多种数据类型,如数值类型(BIT、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE等)、字符串类型(VARCHAR、TEXT、BLOB)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)以及枚举和集合类型等。...

    主流数据库数据类型的比较

    - MySQL的日期时间类型有date、time、datetime、timestamp和year,其中timestamp可以记录数据修改的时间。 - MS SQL Server的日期时间类型包括datetime、smalldatetime和timestamp,timestamp在这里实际上记录了...

    MYSQL

    7.2 用户变量 7.3 列类型 7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型 7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3....

    MySQL中文参考手册.chm

    7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型 7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4...

    mysql常用的笔记总结

    MySQL支持多种数据类型,包括时间日期类(DATE、DATETIME、TIME、TIMESTAMP、YEAR)、数值类(BIGINT、BIT、DECIMAL、FLOAT、INT、MEDIUMINT、SMALLINT、TINYINT)、字符串类(BINARY、BLOB、LONGBLOB、MEDIUMBLOB、...

    MySQL中文参考手册

    # 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 # 7.3.6.3 TIME类型 # 7.3.6.4 YEAR类型 + 7.3.7 字符串类型 # 7.3.7.1 CHAR和VARCHAR类型 # 7.3.7.2 BLOB和TEXT类型 # 7.3.7.3 ENUM类型 # 7.3.7.4 SET类型 + ...

    介绍六个有用的MySQL的SQL语句

    这条语句将当前日期减去出生日期,计算出生日期到当前日期的天数,然后使用 `DATE_FORMAT` 函数将天数转换为年数。 2. 两个时间的差 计算两个 datetime 值之间的差别是非常常见的需求,例如,计算两个时间点之间的...

    MySQL入门很简单

    - 日期/时间类型:DATE、TIME、DATETIME、TIMESTAMP等。 7. 关系与键: - 主键:唯一标识一条记录,使用`PRIMARY KEY`约束。 - 外键:关联两个表的字段,使用`FOREIGN KEY`约束。 - 索引:提高查询速度,包括...

    Mysql数据库设计.pdf

    - `mysql_create_db()`, `mysql_drop_db()`, `mysql_fetch_object()`, `mysql_affected_rows()` 等其他函数用于更复杂的数据库操作。 这些知识点涵盖了MySQL数据库设计的基础,包括数据类型、属性、操作和PHP接口...

    mysql暑假作业.zip

    2. **数据类型**:MySQL支持多种数据类型,如整数类型(INT, TINYINT, SMALLINT等)、浮点数类型(FLOAT, DOUBLE)、字符串类型(VARCHAR, CHAR, TEXT)和日期时间类型(DATE, TIME, DATETIME, TIMESTAMP)等,理解...

Global site tag (gtag.js) - Google Analytics