java更新数据库的datatime字段

java更新数据库的datatime字段,第1张

可以尝试以下代码:

javautilDate dt = new javautilDate();

javatextSimpleDateFormat sdf =

new javatextSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdfformat(dt);

然后把currentTime 插入数据库的datetime字段就可以了,取的时候也一样,取出来的

更新mysql数据库中datetime类型的字段:

举例如下:

UPDATE calldata

SET date = DATE_SUB(date, INTERVAL 7 DAY)

WHERE date >= '2014-01-08'

AND date < '2014-01-09

这个sql语句中,date 是datetime类型的

在oracle新建一个job 这个job可以设定时间 自动运行的!~

创建

variable job_feeid_create NUMBER;

begin

sysdbms_jobsubmit(:job_feeid_create,'wlk_check_fee;',sysdate,'TRUNC(SYSDATE+1)');

commit;

end;

在命令控制台中这样就可以建产一个作业了。sysdate表示当前作业将来执行的时间,sysdate+1表示调用频率。

描述 INTERVAL参数值

每天午夜12点 'TRUNC(SYSDATE + 1)'

每天早上8点30分 'TRUNC(SYSDATE + 1) + (860+30)/(2460)'

每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

运行

begin

dbms_jobrun(:job_feeid_create);

end;

查询作业记录

select from user_jobs

具体讲解:

1.确保Oracle的工作模式允许启动任务队列管理器

Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以 DBA的身份去执行如下命令:

svrmgrl>; alter system enable restricted session;

或sql>; alter system disenable restricted session;

利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。

2.确保Oracle的系统已经配置了任务队列管理器的启动参数

SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是 initmyora8ora,在文件中对SNP启动参数的描述部分如下:

job_queue_process=n

job_queue_interval=N

第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。

第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状 态,睡眠一段时间后,由系统的总控负责将其唤醒。

如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的 话,N的配置也要相应地小一点。

3.将任务加入到数据库的任务队列中

用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中:

dbms_jobsubmit( job out binary_integer,

what in archar2,

next_date in date,

interval in varchar2,

no_parse in boolean)

其中:

●job:输出变量,是此任务在任务队列中的编号;

●what:执行的任务的名称及其输入参数;

●next_date:任务执行的时间;

●interval:任务执行的时间间隔。

下面详细讨论一下dbms_jobsubmit中的参数interval。严格地讲,interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null 时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

将任务加入到任务队列之前,要确定执行任务的数据库用户,若用户是scott, 则需要确保该用户拥有执行包dbms_job的权限;若没有,需要以 DBA的身份将权利授予scott用户:

svrmgrl>; grant execute on dbms_job to scott;

4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段

例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:

sql>; variable n number;

sql>; begin

dbms_jobsubmit(:n‘my_job;’,sysdate,

‘sysdate+1/360’);

commit;

end;

/

系统提示执行成功。

Sql>; print :n;

系统打印此任务的编号,例如结果为300。

如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:

sql>; select job,next_date,next_sec,failures,broken from user_jobs;

执行结果如下:

job next_date next_sec failures broken

300 2000/10/10 11:45:15 0 N

这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_jobbroken,重新设置为not broken,或强制调用dbms_jobrun来重新执行它。

除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来 *** 作任务。例如:dbms_jobchange 、 dbms_jobwhat、dbms_jobinterval可以用来修改提交的任务。要想删除该任务,只需运行dbms_jobremove(n)即可,其中n为任务号。

具体 *** 作步骤如下:

1、第一步,打开sql数据库,新建一个表。格式原因,以下的date_time和time_time为日期类型,如图所示。

2、第二步,若是简单的查询表,那么就会以日期格式显示出来,如图所示。

3、第三步,使用函数to_char,把查询日期显示结果更改成日期形式,获得以下结果,如图所示。

4、第四步,点击查询编辑器选项,键入以下代码,如图所示。

5、第五步,可以看到日期就修改好了,如图所示。

SQL数据库记录修改时间

如果要改成 当天日期的话:

update 表名 set checktime=to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') where checktime=to_date('2010-10-11 19:14:43','yyyy-mm-dd hh24:mi:ss')

----如果要这样改的话:2010-10-11 19:14:43 改成 2011-11-11 19:14:43 。就是只改月数的话,

----可以用add_months(date,n)函数

update 表名 set checktime= add_months(checktime,12) where checktime=to_date('2010-10-11 19:14:43','yyyy-mm-dd hh24:mi:ss')

可通过以下方法:

以100条数据为例,如果海量数据可参考。

如test表中有如下数据:

现要将begintime改成当前时间,每10条提交一次。

可用如下存储过程:

declare 

i int;--定义变量

v_count int;--定义变量

v_loop int;--定义变量

begin

 select count() into v_count from test;--计算表内数据总数

 select ceil(v_count/10) into v_loop from dual;--计算需要循环次数

 i:=1;--为i赋值

 while i<=v_loop loop--循环退出条件

   update test set begintime=sysdate where begintime is null and rownum<=10;--执行更新

   commit;--提交

   i:=i+1;--i依次加1

 end loop;--结束循环

end;

1 写一个提交和更新函数。

2 用job

begin

dbms_jobsubmit(:job1,'create_date_log_row(你的函数名称);',sysdate,'sysdate+1/1440'(函数执行时间设置));

commit;

end;

()中间为汉字的为说明。使用时删除。

以上就是关于java更新数据库的datatime字段全部的内容,包括:java更新数据库的datatime字段、如何更新mysql数据库中datetime类型的字段、求 Oracle 大神指教,更具时间自动更新状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/10145731.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存