数据库日期存储
① 数据库中 日期的几种表示方法
Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。
【1】Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。
【2】Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
【3】Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
(1)数据库日期存储扩展阅读
切记不要用字符串存储日期
这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不正确的做法,主要会有下面两个问题:
1、字符串占用的空间更大。
2、字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
DateTime 类型没有时区信息的
DateTime 类型是没有时区信息的(时区无关),DateTime 类型保存的时间都是当前会话所设置的时区对应的时间。
当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。不要小看这个问题,很多系统就是因为这个问题闹出了很多笑话。
Timestamp 和时区有关。Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。
② 数据库 存储时间
数据库存储时间有两种方式:
1、 使用Timestamp,则会在数据库里存储:2013-07-16 07:20:01。
在不同时区,显示的都是2013-07-16 07:20:01,但其实他们并不是同一时间了。
2、存储事件发生的时间毫秒值,在不同时区解析出来的时间表示不一样,但表达都是同一时间,能解决时区问题。
③ 如何向数据库中存入日期
),这个接口中有一个setDate方法,两个参数,一个是序号,一个是java.sql.Date,这是java.util.Date的一个子类。
这里请你使用java.text.SimpleDateFormat,这个类可以使用你自定义的格式来对一个string进行parse,并得到一个java.util.Date。但“这种Date”并不能直接送到数据库中去,你需要先用getTime方法得到一个毫秒数,再以此为参数构造一个java.sql.Date。再回到我上点讲的setDate,传进去。即可。
这种方法无须考虑不同数据库使用的日期的格式问题。通用。也不易出错。
④ 数据库中哪种日期存储格式,性能会更好
数据库中日期存储格式有几种,需要根据你的需求抉择:
1、timestamp:既能保证性能又能使用自带时间日期函数
2、int :适合作时间的比较,但是可读性差
3、datetime :适合数据库数据导出,可读性高,但查询性能不高。(不推荐)
4、varchar:不支持时区。(不推荐)
⑤ 如何将日期存入数据库
将日期转换为int类型时间戳,保存到数据库int类型列,推荐使用这种方式
将日期保存到数据库date类型列
把日期直接保存到char/varchar类型列,这种方式是最差的做法,无法比较日期大小,但是可以保存任何格式类型
⑥ mysql数据库里的日期用timestamp还是datetime好
Mysql中经常用来存储日期的数据类型有2种:Date、Datetime.
1.Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。
2.Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
⑦ 数据库存储日期时间数据时,使用数据类型datetime和datetime2有什么区别
Datetime:
时间格式,对应于数据库中的DateTime类型,对应于.NET里面的System.
DateTime类型。DateTime支持日期从1753年1月1日到9999年12月31日,时间部分的精确度是3.33毫秒,它需要8字节的存储空间。
Datetime2:
时间格式,就Sql
Server
2008
里面新增的字段类型。对应于数据库中的DateTime2格式,对应于.NET里面的System.
DateTime类型。DateTime2则支持从0001年01月01日到9999年12月31日,时间部分的精度是100纳秒,占用6到8字节的存储空间,取决于存储的精度。
datetime2数据类型,类似于之前的datetime类型,不过其精度比较高,可以精确到小数点后面7位(100ns)
⑧ 数据库的日期类型字段该如何选择
Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。
Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。
Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-00 00:00:00)
⑨ 关于数据库中日期的存储
Unix时间戳(Unix timestamp)
定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
应该是这个……