如果表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。
如果试图插入一个不合法的日期,MySQL将给出警告或错误。可以使用ALLOW_INVALID_DATES SQL模式让MySQL接受某些日期,例如'1999-11-31'。当你想要保存一个“可能错误的”用户已经在数据库中指定(例如,以web形式)用于将来处理的值时很有用。在这种模式下,MySQL只验证月范围为从0到12,日范围为从0到31。这些范围可以包括零,因为MySQL允许在DATE或DATETIME列保存日/月和日是零的日期。这在应用程序需要保存一个你不知道确切日期的生日时非常有用。在这种情况下,只需要将日期保存为'1999-00-00'或'1999-01-00'。如果保存此类日期,DATE_SUB()或DATE_ADD等需要完整日期的函数不会得到正确的结果。(如果你不想在日期中出现零,可以使用NO_ZERO_IN_DATE
SQL模式)。
MySQL还允许将'0000-00-00'保存为“伪日期”(如果不使用NO_ZERO_DATE SQL模式)。这在某些情况下比使用NULL值更方便(并且数据和索引占用的空间更小)。
将sql_mode系统变量设置为相应模式值,可以更确切你想让MySQL支持哪种日期。
当使用日期和时间类型时应记住以下几点:
·MySQL以标准输出格式检索给定日期或时间类型的值,但它尽力解释你指定的各种输入值格式(例如,当你指定一个分配给或与日期或时间类型进行比较的值时)。只支持下面描述的格式。期望你能提供有效值。如果你使用其它格式的值会发生意想不到的结果。
·包含两位年值的日期会令人模糊,因为世纪不知道。MySQL使用以下规则解释两位年值:
70-99范围的年值转换为1970-1999。
00-69范围的年值转换为2000-2069。
·尽管MySQL尝试解释几种格式的值,日期总是以年-月-日顺序(例如,'98-09-04'),而不是其它地方常用的月-日-年或日-月-年顺序(例如,'09-04-98','04-09-98')。
·如果值用于数值上下文中,MySQL自动将日期或时间类型的值转换为数字,反之亦然。
·当 MySQL遇到一个日期或时间类型的超出范围或对于该类型不合法的值时(如本节开始所描述),它将该值转换为该类的“零”值。一个例外是超出范围的TIME值被裁剪到TIME范围的相应端点。
下面的表显示了各类“零”值的格式。请注意如果启用NO_ZERO_DATE SQL模式,使用这些值会产生警告。
列类型 “零”值
DATETIME '0000-00-00 00:00:00'
DATE '0000-00-00'
TIMESTAMP 00000000000000
TIME '00:00:00'
YEAR 0000
·“零”值是特殊值,但你可以使用表内显示的值显式保存或引用它们。你也可以使用值'0'或0来保存或引用,写起来更容易。
·MyODBC中使用的“零”日期或时间值在MyODBC 2.50.12和以上版本中被自动转换为NULL,因为ODBC不能处理此类值。
分享到:
相关推荐
MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间类型。这些数据类型的选择对于数据库设计和性能优化至关重要。以下是关于MySQL日期和时间类型的详细说明: 日期类型: 1. **datetime**:...
MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间类型,每种类型都有其特定的格式、存储空间占用以及适用范围。在选择适合的数据类型时,需要根据实际需求进行权衡。 首先,让我们来看看...
1. 对数据进行分类:数据类型有助于对数据进行归类处理,例如整数、字符串、日期等。不同的数据类型执行不同的操作,比如字符串类型可以包含文本,而整数类型只能包含数字。 2. 预防数据运算错误:定义数据类型能够...
MySQL 数据库中的列类型,也就是字段类型,是数据库设计中的关键元素,决定了数据的存储方式和处理方式。列类型分为三大类:数值类、字符串类和日期/时间类。 数值类数据列类型主要包括整型和浮点型。整型又分为 ...
本文将详细介绍MySQL中的数据类型,主要包括数值类型、字符串类型和时间日期类型。 1、数值类型 MySQL 中的数值类型分为整数类型、定点数和浮点数。 - 整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER...
MySQL 支持多种数据类型,包括数值类型、字符串类型、日期和时间类型以及二进制类型。这些数据类型的选择直接影响到数据的存储效率、查询性能以及数据的正确性。 1. 数值类型: - 整数类型:如 TINYINT、SMALLINT...
11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型
以下是对在MySQL建表过程中如何将日期设置为默认获取当前系统时间这一知识点的深入探讨。 ### 1. 使用`CURRENT_TIMESTAMP`作为默认值 在创建表结构时,可以指定某一列(通常是时间戳类型)的默认值为`CURRENT_...
MySQL提供了多种用于处理日期和时间的类型: - **DATE**:仅存储日期部分,格式为YYYY-MM-DD。 - **TIME**:仅存储时间部分,格式为HH:MM:SS。 - **DATETIME**:同时存储日期和时间部分,格式为YYYY-MM-DD HH:MM:SS...
11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 ...
3. 数据类型:MySQL提供了多种数据类型,如数值类型(INT、FLOAT、DECIMAL)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)以及二进制类型(BLOB、BINARY)。选择合适的...
以下是对MySQL日期数据类型和时间类型的详细分析: 1. **日期数据类型**: - **datetime**: 8字节,格式为YYYY-MM-DD HH:MM:SS,日期范围从1000-01-01 00:00:00到9999-12-31 23:59:59。这种类型适合存储完整的日期...
MySQL 中日期字段分为 `DATE` 和 `TIME`,而 Oracle 的 `DATE` 字段包含日期和时间信息。在 Oracle 中,可以使用 `SYSDATE` 获取当前系统日期,精确到秒。日期转换函数 `TO_DATE()` 和 `TO_CHAR()` 分别用于将字符...
11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 ...
在安装与配置MySQL后,我们需要熟悉数据类型,如整数类型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)、浮点数类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME...
以下是对MySQL数据类型的详细阐述。 1. 整数类型: - TINYINT:占用1字节,取值范围-128到127,或无符号0到255。 - SMALLINT:占用2字节,取值范围-32768到32767,或无符号0到65535。 - MEDIUMINT:占用3字节,...
2. **数据类型与运算符**:掌握各种数据类型,如整型、浮点型、字符串和日期时间类型,以及逻辑、比较和算术运算符的使用。 3. **SQL语句**:熟练编写SELECT查询,理解JOIN、子查询、分组和聚合函数、排序和限制、...
11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列类型 ...
11.3.4. Y2K事宜和日期类型 11.4. String类型 11.4.1. CHAR和VARCHAR类型 11.4.2. BINARY和VARBINARY类型 11.4.3. BLOB和TEXT类型 11.4.4. ENUM类型 11.4.5. SET类型 11.5. 列类型存储需求 11.6. 选择正确的列...