mysql+date存储有问题,mysql – 如何在数据库中存储非常旧的日期?

实际上,即使是

documentation的澄清,您也可以在MySQL的1000年以前存储日期:

mysql> describe test;

+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| birth | date | YES | | NULL | |

+-------+---------+------+-----+---------+-------+

– 您仍然需要以YYYY格式输入年份:

mysql> insert into test values (1, '0995-03-05');

Query OK, 1 row affected (0.02 sec)

mysql> select * from test;

+------+------------+

| id | birth |

+------+------------+

| 1 | 0995-03-05 |

+------+------------+

1 row in set (0.00 sec)

– 您将能够以此作为日期操作:

mysql> select birth + interval 5 day from test;

+------------------------+

| birth + interval 5 day |

+------------------------+

| 0995-03-10 |

+------------------------+

1 row in set (0.03 sec)

至于安全。我从来没有遇到这样的情况,当这不能在MySQL 5.x(这是因为,并不意味着它将100%工作,但至少它是可靠的一定的概率)

关于BC日期(在基督之下)。我认为这很简单 – 在MySQL中没有办法存储负日期。即您将需要将年份分开存储为有符号整数字段:

mysql> select '0001-05-04' - interval 1 year as above_bc, '0001-05-04' - interval 2 year as below_bc;

+------------+----------+

| above_bc | below_bc |

+------------+----------+

| 0000-05-04 | NULL |

+------------+----------+

1 row in set, 1 warning (0.00 sec)

mysql> show warnings;

+---------+------+--------------------------------------------+

| Level | Code | Message |

+---------+------+--------------------------------------------+

| Warning | 1441 | Datetime function: datetime field overflow |

+---------+------+--------------------------------------------+

1 row in set (0.00 sec)

但是我认为,在任何情况下(0/0以下),最好在这种情况下将日期部分存储为整数 – 这不会依赖于未记录的功能。但是,您将需要使用这3个字段作为日期(所以在某种意义上说,这不是您的问题的解决方案)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值