|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
需要处理因此带来的更多的支持工作,这有可能会带来成本上的提高。在这种情况下,一些MySQL学习教程发行商可能倾向于选择别的开源数据库,例如遵循BSD授权的PostgreSQL。oracle|对照|数据|数据范例
原著JamesKoopmann
假如你想在ORACLE中存储DATE和工夫信息的话,实践上你由两种字段数据范例的选择的话,就让我们看看这两种数据范例的不同和它们供应了些甚么。
DATE数据范例
这个数据范例我们其实是太熟习了,当我们必要暗示日期和工夫的话城市想到date范例。它能够存储月,年,日,世纪,时,分和秒。它典范地用来暗示甚么时分事变已产生或将要产生。DATE数据范例的成绩在于它暗示两个事务产生工夫距离的器度粒度是秒。这个成绩将在文章稍后会商timestamp的时分被办理。可使用TO_CHAR函数把DATE数据举行传统地包装,到达暗示成多种格局的目标。
SQL>SELECTTO_CHAR(date1,MM/DD/YYYYHH24:MI:SS)"Date"FROMdate_table;
Date
---------------------------
06/20/200316:55:14
06/26/200311:16:36
我见到的年夜多半人堕入的贫苦就是盘算两个工夫间的距离年纪、月数、天数、小时数和秒数。你必要分明的是,当你举行两个日期的相减运算的时分,失掉的是天数。你必要乘上天天的秒数(1天=86400秒),然后,你能够再次盘算失掉你想要的距离数。上面就是我的办理办法,能够准确盘算出两个工夫的距离。我分明这个例子能够更冗长些,可是我是为了显现一切的数字来夸大盘算体例。
1SELECTTO_CHAR(date1,MMDDYYYY:HH24:MI:SS)date1,
2TO_CHAR(date2,MMDDYYYY:HH24:MI:SS)date2,
3trunc(86400*(date2-date1))-
460*(trunc((86400*(date2-date1))/60))seconds,
5trunc((86400*(date2-date1))/60)-
660*(trunc(((86400*(date2-date1))/60)/60))minutes,
7trunc(((86400*(date2-date1))/60)/60)-
824*(trunc((((86400*(date2-date1))/60)/60)/24))hours,
9trunc((((86400*(date2-date1))/60)/60)/24)days,
10trunc(((((86400*(date2-date1))/60)/60)/24)/7)weeks
11*FROMdate_table
DATE1DATE2SECONDSMINUTESHOURSDAYSWEEKS
------------------------------------------------------------------------------------
06202003:16:55:1407082003:11:22:57432718172
06262003:11:16:3607082003:11:22:572160121
TIMESTAMP数据范例
DATE数据范例的次要成绩是它粒度不克不及充足区分出两个事务哪一个先产生。ORACLE已在DATE数据范例上扩大出来了TIMESTAMP数据范例,它包含了一切DATE数据范例的年代日时分秒的信息,并且包含了小数秒的信息。假如你想把DATE范例转换成TIMESTAMP范例,就利用CAST函数。
SQL>SELECTCAST(date1ASTIMESTAMP)"Date"FROMt;
Date
-----------------------------------------------------
20-JUN-0304.55.14.000000PM
26-JUN-0311.16.36.000000AM
正如你看到的,在转换后的工夫段尾部有了一段“.000000”。这是由于从date转换过去的时分,没有小数秒的信息,缺省为0。并且显现格局是依照参数NLS_TIMESTAMP_FORMAT定的缺省格局显现。当你把一个表中date范例字段的数据移到另外一个表的timestamp范例字段中往的时分,能够间接写INSERTSELECT语句,oracle会主动为你做转换的。
1SELECTTO_CHAR(time1,MM/DD/YYYYHH24:MI:SS)"Date"FROMdate_table
Date
-------------------
06/20/200316:55:14
06/26/200311:16:36
MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。 |
|