034 - year 年份类型

本文介绍了MySQLYEAR类型的特点,包括其四位数的隐式和显式宽度使用建议,以及从MySQL8.0.19起的显示宽度变化。讨论了不同输入格式的处理,如两位数转换、0值的特殊处理和SQL模式对无效值的处理。
摘要由CSDN通过智能技术生成

该YEAR类型是1字节类型,用于表示年份值。可以将其声明为 YEAR具有4个字符的隐式显示宽度,或等效于YEAR(4)显式显示宽度。

注意:

从MySQL 8.0.19开始,不建议YEAR(4) 使用具有显式显示宽度的数据类型,并且您应该期望在将来的MySQL版本中删除对它的支持。而是使用YEAR 不具有相同含义的显示宽度。

MySQL 8.0不支持YEAR(2)旧版本MySQL中允许的两位数 数据类型。有关转换为4位的指令YEAR,请参见 两位数年份(2)的限制和迁移到4位数年份,在 MySQL的5.7参考手册

MySQLYEAR以格式显示值 YYYY,范围为 1901to2155和 0000

YEAR接受多种格式的输入值:

  • 作为 4 位数字的字符串,范围'1901'为 '2155'.

  • 作为 4 位数字,范围1901为 2155.

  • 作为 1 或 2 位数范围内的'0' 字符串'99'。MySQL 将'0'to'69'和 '70'to'99范围内的值转换为2000to2069 和 1970to 1999范围内YEAR的值 。

  • 作为 1 或 2 位数范围内的0 数字99。MySQL 将‘1’to‘69’和 ‘70’到‘99’范围内的值转换为2001to2069 和 1979to1999 范围内YEAR的值 。

    插入数字的结果的0显示值为0000,内部值为0000。要插入零并将其解释为2000,请将其指定为字符串'0''00'

  • 作为返回上下文中可接受的值的函数的结果YEAR,例如 NOW().

如果未启用严格 SQL 模式,MySQL 会将无效 YEAR值转换为0000. 在严格 SQL 模式下,尝试插入无效 YEAR值会产生错误。

-- 年份类型:year,默认四位
CREATE TABLE test_year (a YEAR)

-- 查询表结构
DESC test_year

-- 作为 4 位数字的字符串,范围'1901'为 '2155'.
-- 作为 4 位数字,范围1901为 2155.
INSERT INTO test_year VALUES (1991)
INSERT INTO test_year VALUES ('2155')

-- 作为 1 或 2 位数范围内的0 数字99。
-- MySQL 将‘1’to‘69’和 ‘70’到‘99’范围内的值转换为2001to2069 和 1979to1999 范围内YEAR的值 。
INSERT INTO test_year VALUES (1)
INSERT INTO test_year VALUES ('70')

-- 插入数字的结果的0显示值为0000,内部值为0000。
-- 要插入零并将其解释为2000,请将其指定为字符串'0'或'00'。
INSERT INTO test_year VALUES (0)
INSERT INTO test_year VALUES ('0')

-- 查询所有数据
SELECT * FROM test_year

-- 删除检索数据
DELETE FROM test_year WHERE a = 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值