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指南,日期问题轻松搞定。
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/280284
本文出自 51CTO.COM技术博客
分享到:
相关推荐
在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地理解和使用这两种类型。 字符串类型 在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是...
本文将详细介绍MySQL中的各种数据类型及其在Java中的对应类型,并解释这些类型的具体含义以及它们在实际应用中的作用。 #### 数据类型对照表解析 ##### 1. VARCHAR (可变长度字符串) **显示长度:** L+N **数据库...
在 MySQL 中,数据类型也可以分为数值类型、日期时间类型、字符串类型等。数值类型包括整形、浮点型和定点型等,其中整形包括 tinyint、smallint、mediumint、int 和 bigint 等;浮点型包括 float 和 double 等。...
Java 和 MySQL 数据类型之间的对比是理解数据库操作和应用程序开发中数据处理的关键。这两种语言的数据类型在功能和使用上都有所不同,尽管它们都用于存储和处理数据,但各自有着特定的适用场景和特点。 首先,Java...
在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库管理系统。在本文中,我们将详细介绍 Java ...
在MySQL数据库中,数据类型转换是一项非常重要的技能。它可以帮助我们灵活地处理不同类型的数据,尤其是在进行数据检索或处理时,经常需要将一种数据类型转换为另一种数据类型。本文将详细介绍MySQL中的数据类型转换...
### 日期和时间数据类型 #### DATE - **大小**:3字节 - **格式**:YYYY-MM-DD - **用途**:存储日期值,适用于记录事件发生的日期。 #### TIME - **大小**:3字节 - **格式**:HH:MM:SS - **用途**:存储时间值或...
MySQL 数据类型是指在 MySQL 数据库中存储数据的方式,它决定了数据的存储格式、大小和范围。了解 MySQL 数据类型非常重要,因为它直接影响数据库的性能、可维护性和安全性。本篇文章将详细介绍 MySQL 的所有数据...
MySQL和Oracle的数据类型则针对存储和操作数据库中的各种数据类型进行了优化。 MySQL的数据类型包括数值类型(如INT、DECIMAL)、字符串类型(如VARCHAR、TEXT)、日期和时间类型(如DATE、TIMESTAMP)以及二进制...
MySQL 数据类型是指在 MySQL 中存储数据的格式,包括整型、浮点型、定点型、字符串、日期时间型、枚举型等多种类型。下面将对 MySQL 数据类型进行详细的介绍。 整型 MySQL 中的整型包括 tinyint、smallint、...
#### 二、MySQL时间数据类型 除了日期数据类型之外,MySQL还提供了专门用于处理时间的数据类型——`TIME`。 1. **TIME** - 存储格式:`HH:MM:SS` - 占用空间:3字节 - 有效范围:`-838:59:59` 至 `838:59:59` ...
本文将详细介绍MySQL中的主要数据类型,并通过与Oracle数据类型的对比,帮助读者更好地理解和应用这些类型。 #### 二、MySQL数据类型详解 MySQL的数据类型大致可以分为四类:数值类型、字符串类型、日期/时间类型...
本文将详细介绍MySQL中的数据类型,主要包括数值类型、字符串类型和时间日期类型。 1、数值类型 MySQL 中的数值类型分为整数类型、定点数和浮点数。 - 整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER...
以下是MySQL中一些主要的基本数据类型的详细说明: 1. **SMALLINT**: 这是一种整数类型,占用2个字节,可以存储从-32,768到32,767的整数值,适用于存储相对较小的整数,如年纪、数量等。 2. **INT**: INT是另一种...
MySQL数据库中数据类型是定义列中可以存储什么类型的数据以及该数据的格式等属性的关键特性。它决定了每列可以存储数据的种类。以下是对上述【部分内容】中可能识别错误的内容进行纠正并详细解释的数据类型知识点: ...
此外,MySQL还支持一些特殊的数据类型,比如TIMESTAMP,它可以用来记录表中记录的修改时间,而在MySQL 5.6及以后的版本中,TIMESTAMP还支持时区的转换。 在选择数据类型时还应考虑未来可能对数据类型的扩展或修改,...
MySQL 数据类型是 MySQL 中最基本的组成部分,也是 MySQL 的核心组成部分。 MySQL 数据类型主要有六大类,即整型、浮点型、定点数浮点型、字符串、日期时间类型和二进制数据类型。 整型 整型是 MySQL 中最基本的...
本文将深入探讨MySQL数据库中的时间类型以及它们在Java编程语言中相对应的数据类型,以及如何在两者之间进行转换。 MySQL数据库提供了多种时间类型来处理日期和时间数据: 1. **DATE**:这个类型仅存储日期,格式...
MySQL 支持的各种数据类型可以分为数值类型、字符串类型、日期和时间类型、二进制类型和枚举和集合类型等。 数值类型 MySQL 支持的数值类型包括整数类型、浮点数类型和定点数类型。 * 整数类型:包括 TINYINT、...
首先,我们必须了解MySQL中处理时间数据的函数。例如,`curdate()` 函数用于获取当前日期,而 `month()` 函数可以提取日期或时间字段中的月份部分。此外,`FROM_UNIXTIME()` 函数用于将UNIX时间戳转换为易读的日期...