日期存入数据库
‘壹’ 如何将日期存入数据库
将日期转换为int类型时间戳,保存到数据库int类型列,推荐使用这种方式
将日期保存到数据库date类型列
把日期直接保存到char/varchar类型列,这种方式是最差的做法,无法比较日期大小,但是可以保存任何格式类型
‘贰’ 怎么插入当前时间到数据库
在数据库表中添加默认的当前日期列:
表中添加日期列,在其默认值中,填上默认日期的函数即可。
oracle 当中是sysdate!
sql server中是GETDATE()
MySQL:curdate()
’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中。
不包括当前的时间 只显示年月日:需要你读取出来的时候,删除掉后面的时间部分。
因为数据库会自动加上 0:00:00 的。
‘叁’ 如何插入时间日期型数据在数据库里
以目前三大主流数据库oracle,mysql,sqlserver分别说明。
如果是oracle,需要用to_date函数将字符型数据转换,插入到数据库的日期型数据中。
如:
createtabletest
(cdatedate);
insertintotestvalues(to_date('2015-08-13','yyyy-mm-dd'));
commit;
如果是mysql或者sqlserver,可直接以字符形式插入,数据库会自动将字符转成日期。
createtabletest
(cdatedatetime);
insertintotestvalues('2015-08-13');
需要注意:oracle中插入后需要commit(提交),否则在关闭当前会话后,插入是不成功的。
‘肆’ 如何向mysql数据库中插入日期
java中有date和datetime,mysql中也有date和datetime,这里我们来说说mysql中的date和datetime。
1 mysql中的date和datetime
1.1 DATETIME
类型可用于需要同时包含日期和时间信息的值。MySQL 以:
‘YYYY-MM-DD HH:MM:SS’
格式检索与显示 DATETIME 类型。支持的范围是:
‘1000-01-01 00:00:00’
到
‘9999-12-31 23:59:59’。
(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)
1.2 DATE
类型可用于需要一个日期值而不需要时间部分时。MySQL 以
‘YYYY-MM-DD’
格式检索与显示DATE值。支持的范围则是
‘1000-01-01’
到
‘9999-12-31’。
2 与java数据的交互
能看出来mysql中的date和datetime区别还是挺大的,date没有保存时间。但是java中的date(java.util.Date)记录的还是挺细的,日期和时间都可以记下来,那么现在问题来了,如果想在mysql中存储日期和时间,也就是用datetime,而在数据中应该如何对应呢?
我使用hibernate测了一下,发现当把mysql数据库中设置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
<property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" />1
反向生成java的pojo时,生成的还是Date。
由此可见对于mysql中datetime,与java中的date,如果要使二者正确交互,中间要使用timestamp。
如果要在JAVA中直接插入MySql的datetime类型,则可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()设置数据库中的“日期+时间”。
这样放入数据库的就是“yyyy-mm-dd hh:mm:ss”格式的数据。
注意,mysql中如果使用date而不是datetime是保存不下“日期+时间”的,只能保存“时间”。