从dual中选择systimestamp
从dual中选择当前时间戳
选择cast(sysdate作为时间戳)& quot日期& quot从双重
从dual中选择to_timestamp(to_date(sysdate,' yyyy-mm-dd '))
select to _ timestamp(' 2008-11-17 00:31:35 ',' YYYY-MM-DD HH24:MI:SS:FF ')from dual
oracle中存储的时间戳是什么格式?插入到表(时间戳_字段)值(系统日期)
或者
插入到表(时间戳字段)值(到时间戳(到日期(' 2007-11-1 ',' yyyy-mm-dd '))
保存后
时间戳_字段
-
2007年11月1日上午12时00分
如果您想在ORACLE中存储日期和时间信息,实际上,您必须在两种字段数据类型之间进行选择。让我们来看看这两种数据类型之间的区别以及它们提供了什么。
日期数据类型
我们非常熟悉这种数据类型,当我们需要表示日期和时间时,我们都会想到日期类型。它可以存储月、年、日、世纪、小时、分钟和秒。它通常用来表示某事已经发生或将要发生。日期数据类型的问题在于,它表示两个事件之间的时间间隔的度量粒度是秒。这个问题将在本文后面讨论时间戳时得到解决。可以使用TO_CHAR函数对日期数据进行传统的封装,达到多种格式表达的目的。
SQL & gtSELECT TO_CHAR(date1,' MM/DD/YYYY HH24:MI:SS ')& quot;日期& quot从日期_表;
日期
-
06/20/2003 16:55:14
06/26/2003 11:16:36
我遇到的大多数人都是因为计算两次之间的年、月、日、小时、秒而陷入困境的。你需要明白的是,当你减去两个日期,你得到的是天数。你需要乘以每天的秒数(1天= 86400秒)。然后,您可以再次计算您想要的间隔数。下面是我的解决方案,可以精确计算两次的间隔时间。我知道这个例子可以更短,但我想展示所有的数字来强调计算方法。
1 SELECT TO_CHAR(date1,' MMDDYYYY:HH24:MI:SS') date1,
2 TO_CHAR(date2,' MMDDYYYY:HH24:MI:SS') date2,
3 trunc(86400*(日期2-日期1))-
4 60*(trunc((86400*(日期2-日期1))/60))秒,
5 trunc((86400*(日期2-日期1))/60)
6 60 *(trunc((86400 *(日期2-日期1))/60)/60))分钟,
7 trunc((86400 *(日期2-日期1))/60)/60)
8 24 *(trunc((86400 *(日期2-日期1))/60)/60)/24))小时,
9 trunc((((86400*(日期2-日期1))/60)/60)/24)天,
10 trunc(((((86400*(日期2-日期1))/60)/60)/24)/7)周
11*开始日期_表
日期1日期2秒钟小时天星期
- - - - - - -
06202003:16:55:14 07082003:11:22:57 43 27 18 17 2
06262003:11:16:36 07082003:11:22:57 21 6 0 12 1
时间戳数据类型
DATE数据类型的主要问题是它的粒度不足以判断两个事件中哪一个先发生。ORACLE将时间戳数据类型扩展到了日期数据类型,包含了所有日期数据类型的年、月、日、分、秒的信息,还包含了小数秒的信息。如果要将日期类型转换为时间戳类型,请使用CAST函数。
SQL & gt选择CAST(日期1作为时间戳)& quot日期& quot从t;
日期
-
2003年6月20日下午4时55分14时00分
2003年6月26日上午11时16分36秒
如您所见,在转换后的时间段的末尾有一个段落。。这是因为从date转换时,没有小数秒的信息,默认值为0。并且显示格式根据由参数NLS _时间戳_格式设置的默认格式来显示。当您将一个表中的日期类型字段的数据移动到另一个表中的时间戳类型字段时,可以直接编写INSERT SELECT语句,oracle会自动为您进行转换。
1 SELECT TO_CHAR(time1,' MM/DD/YYYY HH24:MI:SS ')& quot;日期& quot开始日期_表格
日期
-
06/20/2003 16:55:14
06/26/2003 11:16:36
时间戳数据的格式显示与日期数据相同。注意,to_char函数支持日期和时间戳,但是trunc不支持时间戳数据类型。这清楚地表明,当两个时间之间的差异非常重要时,使用时间戳数据类型比日期数据类型更准确。
如果要显示时间戳的小数秒信息,请参考以下内容:
1 SELECT TO_CHAR(time1,' MM/DD/YYYY HH24:MI:SS:FF3 ')& quot;日期& quot开始日期_表格
日期
-
06/20/2003 16:55:14:000
06/26/2003 11:16:36:000
在上面的例子中,我只实现了小数点后3位的内容。
计算时间戳之间的数据差异比旧的日期数据类型更容易。直接减法的时候,看看会发生什么。成绩会比较好理解,第一线17天18小时27分43秒。
1选择时间1,
2时间2,
3 substr((时间2-时间1),instr((时间2-时间1),' ')+7,2)秒,
4 substr((时间2-时间1),instr((时间2-时间1),' ')+4,2)分钟,
5 substr((时间2-时间1),instr((时间2-时间1),' ')+1,2)小时,
6 trunc(to _ number(substr((time 2-time 1),1,instr(time2-time1,' ')))天,
7 trunc(to_number(substr((时间2-时间1),1,instr(时间2-时间1,' ')))/7)周
8*起始日期_表
时间1时间2秒钟小时天星期
- - - - - - -
06/20/2003:16:55:14:000000 07/08/2003:11:22:57:000000 43 27 18 17 2
06/26/2003:11:16:36:000000 07/08/2003:11:22:57:000000 21 06 00 12 1
这意味着,不需要在意一天有多少秒是在麻烦的计算中。因此,获取天数、月数、天数、小时数、分钟数和秒数就变成了用substr函数提取数字的问题。
系统日期和时间
若要获取系统时间,请返回到日期数据类型。您可以使用sysdate函数。
SQL & gt从DUAL中选择SYSDATE
要获取系统时间,请返回到时间戳数据类型。您可以使用systimpstamp函数。
SQL & gt从DUAL中选择SYSTIMESTAMP
您可以设置初始化参数FIXED_DATE,以指定sysdate函数返回一个固定值。这用于测试对日期和时间敏感的代码。请注意,该参数对于systimestamp函数无效。
SQL & gtALTER SYSTEM SET fixed _ date = ' 2003-01-01-10:00:00 ';
系统改变了。
SQL & gt从dual中选择sysdate
系统日期
-
2003年1月1日
SQL & gt从dual中选择systimestamp
系统时间戳
-
2003年7月9日上午11时至6时
当使用日期和时间戳类型时,选择是明确的。您可以随意处理日期和时间戳类型。当你试图切换到一个更强大的时间戳时,需要注意的是,它们之间有相同之处,也有不同之处,这些都足以造成伤害。两者在简洁性和间距大小上各有优势。请合理选择。
关键词:甲骨文
优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。本文链接:http://www.123down.cn/gonglue/227435.html