谈谈数据库中的日期、时间、日期时间、时间戳
2017-04-16 22:21
411 查看
最近翻看以前的笔记,发现对于数据库日期时间和时间戳还不是太明白。下面从网上搜了下,整理到下面**
Date 包含年月日如:2008-03-21 ,Time时间:19::00:00
在数据库中存储插入数据时的时间,比如有一条评论,我想在把评论内容存入数据库的时候把存储评论时的时间也存到数据库中。当然这个过程是自动完成的,即不需要我在业务逻辑代码中还得初始化一个Date对象然后再把这个Date对象转换为某种格式存到数据库中。
Oracle提供了时间戳数据类型Timestamp来支持这个操作。当一个字段定义成Timestamp类型时,通过在insert语句中指定value为Sysdate就可以将执行insert语句时的时间存入数据库中。例如:
然后执行查询:
Select commenttime From webcomments;
结果显示commenttime 列的值是这种样子的:18-4月 -10 03.31.06.000000 下午
这和我们的预想不太相符。我们想查询出来的时间应该是这个样子的:2010-04-18 13:10:57
这要是用to_char函数,利用它我们可以把一个日期数据转换为任何我们想要的格式。例如这样写select语句:
得到的结果是2010-04-18 15:31:06
要了解的一点是:如果单单是想存储时间的话,Oracle还提供了一种日期类型Date,使用它也可以存储插入数据时的时间,只要插入数据时也赋值为 Sysdate就可以。并且在查询时也一样可以使用to_char函数得到想要的格式。那问题就是:为什么我们要使用Timestamp类型呢?
date和Timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒Timestamp数据的格式化显示和 Date数据一样。注意,to_char函数支持Date和Timestamp,但是trunc却不支持Timestamp数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用Timestamp数据类型要比Date数据类型更确切。
并且:两个Date类型相减的结果是以“天”为单位的,而两个Timestamp类型相减的结果是直观的显示为“多少天+多少小时+多少分钟+多少秒+多少小数秒”。例如:
查询结果显示(多少天 多少小时 多少分钟 多少秒 多少小数秒 ):000000001 01:30:10.100000
最后,Date转换为Timestamp要使用CAST函数,例如:
Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
例如有表table,table 中有两个字段:name 、makedate
1.oracle:
插入系统时间应为sysdate:
insert into table (name,makedate) values('测试',sysdate);
2.Db2:
插入系统时间应为current timestamp并且makedate数据类型为timestamp
insert into table (name,makedate) values('测试',current timestamp);
3.SqlServer:
插入系统时间应为GETDATE()
insert into table (name,makedate) values('测试',GETDATE());
4.MySQL:
插入系统时间应:
now():以'yyyy-mm-dd hh:mm:ss'返回当前的日期时间,可以直接存到datetime字段中。
curdate():’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中。
insert into table (name,makedate) values('测试',now());
转载
转载是分享博文的一种常用方式...
4000
昵 称:
匿名评论
Date 包含年月日如:2008-03-21 ,Time时间:19::00:00
在数据库中存储插入数据时的时间,比如有一条评论,我想在把评论内容存入数据库的时候把存储评论时的时间也存到数据库中。当然这个过程是自动完成的,即不需要我在业务逻辑代码中还得初始化一个Date对象然后再把这个Date对象转换为某种格式存到数据库中。
Oracle提供了时间戳数据类型Timestamp来支持这个操作。当一个字段定义成Timestamp类型时,通过在insert语句中指定value为Sysdate就可以将执行insert语句时的时间存入数据库中。例如:
然后执行查询:
Select commenttime From webcomments;
结果显示commenttime 列的值是这种样子的:18-4月 -10 03.31.06.000000 下午
这和我们的预想不太相符。我们想查询出来的时间应该是这个样子的:2010-04-18 13:10:57
这要是用to_char函数,利用它我们可以把一个日期数据转换为任何我们想要的格式。例如这样写select语句:
得到的结果是2010-04-18 15:31:06
要了解的一点是:如果单单是想存储时间的话,Oracle还提供了一种日期类型Date,使用它也可以存储插入数据时的时间,只要插入数据时也赋值为 Sysdate就可以。并且在查询时也一样可以使用to_char函数得到想要的格式。那问题就是:为什么我们要使用Timestamp类型呢?
date和Timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒Timestamp数据的格式化显示和 Date数据一样。注意,to_char函数支持Date和Timestamp,但是trunc却不支持Timestamp数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用Timestamp数据类型要比Date数据类型更确切。
并且:两个Date类型相减的结果是以“天”为单位的,而两个Timestamp类型相减的结果是直观的显示为“多少天+多少小时+多少分钟+多少秒+多少小数秒”。例如:
查询结果显示(多少天 多少小时 多少分钟 多少秒 多少小数秒 ):000000001 01:30:10.100000
最后,Date转换为Timestamp要使用CAST函数,例如:
Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
例如有表table,table 中有两个字段:name 、makedate
1.oracle:
插入系统时间应为sysdate:
insert into table (name,makedate) values('测试',sysdate);
2.Db2:
插入系统时间应为current timestamp并且makedate数据类型为timestamp
insert into table (name,makedate) values('测试',current timestamp);
3.SqlServer:
插入系统时间应为GETDATE()
insert into table (name,makedate) values('测试',GETDATE());
4.MySQL:
插入系统时间应:
now():以'yyyy-mm-dd hh:mm:ss'返回当前的日期时间,可以直接存到datetime字段中。
curdate():’yyyy-mm-dd’的格式返回今天的日期,可以直接存到date字段中。
insert into table (name,makedate) values('测试',now());
转载列表:
转载
转载是分享博文的一种常用方式...
4000
昵 称:
匿名评论
相关文章推荐
- Oracle 获取系统日期时间,导出数据库
- 请问各种数据库是如何取当前日期和时间
- android 数据库 sqlite数据类型(时间 日期 double等)
- 数据库中的各种时间日期类型
- android 数据库 sqlite数据类型(时间 日期 double等)
- 从oracle 数据库读取日期时间,并在网页上打印万年历
- 如何用SQL语句,查询数据库(日期+时间字段)中等于某一天的记录
- 查询数据库时时间日期的过滤查询
- jsp页面调用时间:让2008-10-6 20:36:42 变成 2008-10-6 ——从数据库调用时只显示日期
- 数据库时间日期格式化
- 如何让sql server 数据库datetime仅保存时间而不含日期
- 将数据库里面的时间从1970年1月1日8:00开始的秒数转换成日期格式
- java 日期的格式化、解析、数据库相关操作、获取系统时间、String与Date的转换
- 在Strtus2中向PostgreSQL数据库插入日期和时间
- 对Flex日期时间与数据库传递日期时间的8小时时差处理
- 请问各种数据库是如何取当前日期和时间
- jsp页面调用时间:让2008-10-6 20:36:42 变成 2008-10-6 ——从数据库调用时只显示日期
- jsp页面调用时间:让2008-10-6 20:36:42 变成 2008-10-6 ——从数据库调用时只显示日期
- ACCESS 数据库插入时间/日期
- android 数据库 sqlite数据类型(时间 日期 double等)