oracle 变行距,oracle 计算时间间距

months_between

MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月。

如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。

当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示,例如

SELECT MONTHS_BETWEEN('25-MAY-2008', '15-JAN-2008')   FROM dual;

MONTHS_BETWEEN('25-MAY-2008','15-JAN-2008')   4.32258065   months_between(date1, date2),必须注意的是,date1与date2都为Date类型,不然会出现错误。须用to_date(‘’,'') 来转换为日期格式,才能参加计算。

***months_between与round计算出的结果不同,round更精确一些??还是都有误差??

有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):

天:

ROUND(TO_NUMBER(END_DATE - START_DATE))

小时:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)

分钟:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)

秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60)

select  months_between(sysdate,t.purchase_date),t.purchase_date from host_lib t;

select  ROUND(TO_NUMBER(sysdate - t.purchase_date)),t.purchase_date from host_lib t;

附:

日期運算函數

2

3

ADD_MONTHS(d,n)

4

--時間點d再加上n個月

5

6

ex.

7

selectsysdate, add_months(sysdate,2) aafromdual;

8

9

SYSDATE    AA

10

---------- ----------

11

21-SEP-07  21-NOV-07

12

13

LAST_DAY(d)

14

--時間點d當月份最後一天

15

16

ex.

17

selectsysdate, LAST_DAY(sysdate) LAST_DAYfromdual;

18

19

SYSDATE    LAST_DAY

20

---------- ---------

21

21-SEP-07  30-SEP-07

22

23

NEXT_DAY(d,number)

24

--◎ 時間點d開始,下一個星期幾的日期

25

--◎ 星期日 = 1  星期一 = 2  星期二 = 3

26

--   星期三 = 4  星期四 = 5  星期五 = 6  星期六 = 7

27

28

ex.

29

selectsysdate, NEXT_DAY(sysdate,2) aafromdual;

30

31

SYSDATE    AA

32

---------- ----------

33

21-SEP-07  24-SEP-07

34

35

MONTHS_BETWEEN(d1,d2)

36

--計算d1與d2相隔的月數

37

38

ex.

39

selecttrunc(MONTHS_BETWEEN(to_date('20071101','yyyymmdd'),

40

to_date('20070820','yyyymmdd'))) aa

41

fromdual;

42

43

AA

44

----------

45

2

46

47

NEW_TIME(d,c1,c2)

48

--轉換新時區

49

50

ex.

51

selectto_char(sysdate,'YYYY/MM/DD HH24:MI:SS') 台北,

52

to_char(NEW_TIME(sysdate,'EST','GMT'),'YYYY/MM/DD HH24:MI:SS') 格林威治

53

fromdual;

54

55

台北                 格林威治

56

-------------------- -------------------

57

2007/09/21 14:36:53  2007/09/21 19:36:53

58

59

ROUND(d[,fmt])

60

--◎ 對日期作四捨五入運算

61

--◎ 月的四捨五入以每月的15號為基準

62

--◎ 年的四捨五入以每年6月為基準

63

64

ex.

65

selectsysdate, ROUND(sysdate,'year') aafromdual;

66

67

SYSDATE    AA

68

---------- ----------

69

21-SEP-07  01-JAN-08

70

71

selectsysdate, ROUND(sysdate,'month') aafromdual;

72

73

SYSDATE    AA

74

---------- ----------

75

21-SEP-07  01-OCT-07

76

77

TRUNC(d[,fmt])

78

--對日期作擷取運算

79

80

ex.

81

selectsysdate, TRUNC(sysdate,'year') aafromdual;

82

83

SYSDATE    AA

84

---------- ----------

85

21-SEP-07  01-JAN-07

86

87

selectsysdate, TRUNC(sysdate,'month') aafromdual;

88

89

SYSDATE    AA

90

---------- ----------

91

21-SEP-07  01-SEP-07

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值