Python 的情况
先来看看 date 类型吧!
In [1]: from datetime import dateIn [2]: date.min
Out[2]: datetime.date(1, 1, 1)In [3]: str(date.min)
Out[3]: '0001-01-01'In [4]: str(date.max)
Out[4]: '9999-12-31'
可以看到
date
的取值范围是 0001-01-01
到 9999-12-31
再来看看 datetime 吧!
In [5]: from datetime import datetimeIn [6]: str(datetime.min)
Out[6]: '0001-01-01 00:00:00'In [7]: str(datetime.max)
Out[7]: '9999-12-31 23:59:59.999999'
可以看到
datetime
的取值范围是 0001-01-01 00:00:00
到 9999-12-31 23:59:59.999999
Mysql 的情况 来看看 mysql 的情况吧,下面的官方文档中的内容:
The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.总结一下就是:
The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD hh:mm:ss' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
- date 的取值范围:
1000-01-01
到9999-12-31
- timestamp 的取值范围:
1970-01-01 00:00:01
到2038-01-19 03:14:07
- datetime 的取值范围:
1000-01-01 00:00:00
到9999-12-31 23:59:59
但是需要注意:
Invalid DATE, DATETIME, or TIMESTAMP values are converted to the “zero” value of the appropriate type ('0000-00-00' or '0000-00-00 00:00:00'), if the SQL mode permits this conversion. The precise behavior depends on which if any of strict SQL mode and the NO_ZERO_DATE SQL mode are enabled; see Section 5.1.10, “Server SQL Modes”.还有这部分:
文章图片
翻译成人话的意思,就是 myql 会把无效的 date 设为
0000-00-00
,无效的 datetime 和 timestamp 设为 0000-00-00 00:00:00
。比如
2022-13-35
就是一个无效的 date
,当把这个值插入到 mysql 中的时候,开启了严格模式的 mysql 会报错,未开启严格模式的 mysql 会转为 0000-00-00
保存。所以我们使用 Python 从 mysql 读取时间类型的时候,一定要注意这个坑!因为
0000-00-00
没有办法转成 Python 的 date
类型,会报错的!顺便可以看看 Mysql 的 date、timestamp、datetime 各占用几个字节:
- date 类型 3 字节
- timestamp 类型 4 字节
- datetime 类型 8 字节
文章图片
推荐阅读
- 【python】利用break 和continue退出for循环
- Python中while循环嵌套介绍和3个实例
- 【Python】退出循环的两种不同方式(break和continue)
- Python中的if嵌套【语法、实例、执行流程】
- Python中if判断语句的综合应用(猜拳游戏)
- Python中while循环详细讲解
- Python 多重判断的语法和作用、代码实例、执行流程
- 【Python】 2个while循环的应用和注意事项
- python|【python与pycharm安装教程,详解】