oracle数据库中字段默认取系统当前的时间

oracle数据库中字段默认取系统当前的时间,第1张

分两种情况,一种是创建表时自动创建带有默认值的字段,一种是把没有默认值的字段设置为有默认值的字段。

第一种情况:

create table test

(id int,

starttime date default sysdate not null );

插入测试数据:

insert into test (id) values (1);

commit;

验证结果:

第二种情况,比如在test表中加一个endtime,时间也要求是系统默认时间。

添加字段且不设置默认值:

alter table test add endtime date;

添加默认值语句:

alter table test modify endtime default sysdate;

测试语句:

insert into test (id) values (2);

commit;

验证结果:

select from test where to_char(d, 'yyyymmdd') between (to_char(sysdate,'yyyymm') || '01') and (to_char(sysdate,'yyyymm') || '11');

Oracle中如何获取系统当前时间

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

ORACLE里获取一个时间的年、季、月、周、日的函数

select to_char(sysdate, 'yyyy' ) from dual; --年

select to_char(sysdate, 'MM' ) from dual; --月

select to_char(sysdate, 'dd' ) from dual; --日

select to_char(sysdate, 'Q') from dual; --季

select to_char(sysdate, 'iw') from dual; --周--按日历上的那种,每年有52或者53周

/

hh 小时(12)

hh24 小时(24)

Mi 分

ss 秒

D 周中的星期几

ddd 年中的第几天

WW 年中的第几个星期

W 该月中第几个星期 --每年的1月1号至1月7号为第一周,以此类推,每年53周

/

获取系统日期: SYSDATE()

格式化日期:

TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)

  或 TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS)

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;

select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual

select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual

而如果把上式写作:

select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual

则会报错,因为小时hh是12进制,14为非法输入,不能匹配。

转换的格式:

表示 year 的:

y 表示年的最后一位 、

yy 表示年的最后2位 、

yyy 表示年的最后3位 、

yyyy 用4位数表示年

表示month的:

mm 用2位数字表示月 、

mon 用简写形式, 比如11月或者nov 、

month 用全称, 比如11月或者november

表示day的:

dd 表示当月第几天 、

ddd 表示当年第几天 、

dy 当周第几天,简写, 比如星期五或者fri 、

day 当周第几天,全称, 比如星期五或者friday

表示hour的:

hh 2位数表示小时 12进制 、

hh24 2位数表示小时 24小时

表示minute的:

mi 2位数表示分钟

表示second的:

ss 2位数表示秒 60进制

表示季度的:

q 一位数 表示季度 (1-4)

另外还有ww 用来表示当年第几周 w用来表示当月第几周。

当前时间减去7分钟的时间

select sysdate,sysdate - interval '7' MINUTE from dual;

当前时间减去7小时的时间

select sysdate - interval '7' hour from dual;

当前时间减去7天的时间

select sysdate - interval '7' day from dual;

当前时间减去7月的时间

select sysdate,sysdate - interval '7' month from dual;

当前时间减去7年的时间

select sysdate,sysdate - interval '7' year from dual;

时间间隔乘以一个数字

select sysdate,sysdate - 8interval '7' hour from dual;

select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss:pm:dy') from dual; 年 月 日 24制小时 分 秒 上/下午 星期中文;

--获取11月天数--select to_char(last_day(to_date('2010-11-1','YYYY-MM-DD')),'DD') from dual;

--获取12月天数--select to_char(last_day(to_date('2010-12-1','YYYY-MM-DD')),'DD') from dual;

显示上个礼拜一到礼拜日 SELECT to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) - 6, to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) from dual

MySQL:获取时间用函数now(),

格式化日期用函数date_format()

Oracle

:获取时间用关键字sysdate,格式化日期函数用to_date()

CREATE TABLE test (

"结算周期" INT,

"用户ID" VARCHAR(12),

"办理时间" VARCHAR(8),

"用户归属" CHAR(1)

);

INSERT INTO test

SELECT 4, '10000000000', '20121231', 'A' FROM dual UNION ALL

SELECT 5, '10000000000', '20121230', 'B' FROM dual UNION ALL

SELECT 7, '10000000000', '20121229', 'C' FROM dual UNION ALL

SELECT 6, '10000000000', '20121228', 'D' FROM dual;

ALTER session

SET nls_date_format='yyyy-mm-dd';

SELECT

ProcDate,

ProcMonths,

StartDate,

EndDate

FROM

test

MODEL

DIMENSION BY (TO_DATE("办理时间", 'YYYYMMDD') as ProcDate)

MEASURES("结算周期" as ProcMonths, TO_DATE("办理时间", 'YYYYMMDD') as StartDate, ADD_MONTHS(TO_DATE("办理时间", 'YYYYMMDD'), "结算周期") AS EndDate)

RULES AUTOMATIC ORDER

(

StartDate[ANY] = GREATEST( PRESENTV(EndDate[CURRENTV() - 1], EndDate[CURRENTV() - 1], CV(ProcDate)), CV(ProcDate) ),

EndDate[ANY] = ADD_MONTHS(StartDate[CURRENTV()], ProcMonths[CURRENTV()])

)

ORDER BY

ProcDate;

PROCDATE PROCMONTHS STARTDATE ENDDATE

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

2012-12-28 6 2012-12-28 2013-06-28

2012-12-29 7 2013-06-28 2014-01-28

2012-12-30 5 2014-01-28 2014-06-28

2012-12-31 4 2014-06-28 2014-10-28

这样的效果

是时间戳类型,参数6指的是表示秒的数字的小数点右边可以存储6位数字,最多9位。解决方法如下:

1、时间戳的概念:它是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

2、在oracle使用时间戳,一般都是为了方便计算时间差的,要知道oracle中的date类型想减是不能友好的得到时间的差值的。所以使用时间戳来得到两个时间差。

3、首先来看oracle中如何获得当前时间的时间戳,用当前时间减去计算机元年后再经过换算得到了的从1970年来到当前时间的时间戳,单位是微妙。

4、另外oracle提供了另一种便捷得到两个时间差的方式,那就是使用timestamp数据类型,它类似date类型,但是存储的时间更为精确,显示的格式:yyyy-mm-dd hh24:mi:ssff AM,其中ff是小数秒。

5、timestamp类型的时间差可读性也比上面那种好一些,可以直观看出两个时间差。

以上就是关于oracle数据库中字段默认取系统当前的时间全部的内容,包括:oracle数据库中字段默认取系统当前的时间、oracle数据库时间日期的查询、oracle数据库怎么表示时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9316470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存