java实现mysql的to_days函数,要求输出结果一致

java实现mysql的to_days函数,要求输出结果一致,第1张

mysql的to_days是计算从公元0年到当前日期的时间差,但事实上公元0年是不存在的,所以用java实现的话都有点区别,如果计算两个时间的日差的话,可以用下面的方法

package know

import java.sql.Date

import java.util.Calendar

import java.util.GregorianCalendar

public class T1 {

public static void main(String[] a) {

System.out.println(getDaysBetween(Date.valueOf("2016-12-01"),

Date.valueOf("2017-02-28")))

}

public static int getDaysBetween(Date start, Date end) {

boolean negative = false

if (end.before(start)) {

negative = true

Date temp = start

start = end

end = temp

}

GregorianCalendar cal = new GregorianCalendar()

cal.setTime(start)

cal.set(Calendar.HOUR_OF_DAY, 0)

cal.set(Calendar.MINUTE, 0)

cal.set(Calendar.SECOND, 0)

cal.set(Calendar.MILLISECOND, 0)

GregorianCalendar calEnd = new GregorianCalendar()

calEnd.setTime(end)

calEnd.set(Calendar.HOUR_OF_DAY, 0)

calEnd.set(Calendar.MINUTE, 0)

calEnd.set(Calendar.SECOND, 0)

calEnd.set(Calendar.MILLISECOND, 0)

if (cal.get(Calendar.YEAR) == calEnd.get(Calendar.YEAR)) {

if (negative)

return (calEnd.get(Calendar.DAY_OF_YEAR) - cal

.get(Calendar.DAY_OF_YEAR)) * -1

return calEnd.get(Calendar.DAY_OF_YEAR)

- cal.get(Calendar.DAY_OF_YEAR)

}

int counter = 0

while (calEnd.after(cal)) {

cal.add(Calendar.DAY_OF_YEAR, 1)

counter++

}

if (negative)

return counter * -1

return counter

}

}

现在正做一个接口,通过不同的连接字符串 *** 作不同的数据库(数据库培训数据库认证)。

要用到MySQL(MySQL认证Mysql培训)数据库,以前没用过这个数据库,用aC++(C++培训)ess和sqlserver比较多。

通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法。

贵阳IT培训http://www.kmbdqn.cn/认为可以通过2种方法实现。

第一种方法是利用ADO连接,第二种方法是利用mysql自己的api函数进行连接。

第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库。

暂时只连接了mysql,sqlserver,oracle,access。

对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说。

第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序。

不管用哪种方法,首先需要安装Mysql数据库,安装方法请看“mysql安装及一些注意点”。

最好安装一个Navicatformysql,方便 *** 作mysql数据库。

下面分别说下这两种方法:(一)通过ADO连接MySql数据库1、通过ADO连接MySql数据库,首先得安装MyODBC服务器程序。

MyODBC版本要和MySql的版本对应上,否则会连接不上数据库。

我用的版本分别是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。

安装好后,点击开始菜单->设置->控制面板->管理工具->数据源(ODBC)->用户DSN->添加->选择MySQLODBC5.1Driver。

如下图:然后双击MySQLODBC5.1Driver进行配置。

配置好可以点Test进行下测试(如下图),如果能连上会d出connectionsuccessful对话框。

1、登陆SYS用户,执行以下代码

begin

Dbms_Java.Grant_Permission('PSIID','java.io.FilePermission', '<<ALL FILE>>','read ,write, execute, delete')

Dbms_java.grant_permission('PSIID', 'SYS:java.io.FilePermission', '<<ALL FILES>>','read ,write, execute, delete')

Dbms_Java.Grant_Permission('PSIID', 'java.io.FilePermission', 'd:a.bat','read ,write, execute, delete')

dbms_java.grant_permission('PSIID', 'java.lang.RuntimePermission','*','writeFileDescriptor' )

end

2、登陆psiid用户创建java程序资源

create or replace and compile

java source named "Util"

as

import java.io.*

import java.lang.*

public class Util extends Object

{

public static int RunThis(String args)

{

Runtime rt = Runtime.getRuntime()

int rc = -1

try

{

Process p = rt.exec(args)

int bufSize = 4096

BufferedInputStream bis =

new BufferedInputStream(p.getInputStream(), bufSize)

int len

byte buffer[] = new byte[bufSize]

// Echo back what the program spit out

while ((len = bis.read(buffer, 0, bufSize)) != -1)

System.out.write(buffer, 0, len)

rc = p.waitFor()

}

catch (Exception e)

{

e.printStackTrace()

rc = -1

}

finally

{

return rc

}

}

}

3、创建调用Java资源的函数

create or replace function RUN_CMD(p_cmd in varchar2) return number

as

language java name 'Util.RunThis(java.lang.String) return integer'

4、建立一过程调用存储过程

create or replace procedure RUN(p_cmd in varchar2)

as

x number

begin

x := run_cmd(p_cmd)

end

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

------- 执行例子

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

--d:a.bat 文件

cd d:

rename %1 %2

SQL>exec rc('d:a.bat mytest.sql b.sql')

D:oracleora92DATABASE>cd d:

D:>rename mytest.sql b.sql

exec :x := RUN_CMD('ipconfig')

variable x number

exec dbms_java.set_output(100000)

exec :x := RUN_CMD('ipconfig')

exec :x := RUN_CMD('d:a.bat')


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

原文地址:https://54852.com/zaji/8658071.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存