SOS 如何在oracle 中计算两日期之间有多少天???并且这两日期都是已经赋了日期的变量:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOS 如何在oracle 中计算两日期之间有多少天???并且这两日期都是已经赋了日期的变量:相关的知识,希望对你有一定的参考价值。

VARCHAR local_time[15];
VARCHAR lst_date[10];
EXEC SQL SELECT TO_CHAR(sysdate,'yyyymmdd')INTO :local_time FROM DUAL;

EXEC SQL SELECT LST_DATE INTO :lst_date FROM DD_MST WHERE AC_ID=(SELECT AC_ID FROM MDM_AC_REL WHERE ac_no=:emp_no);

EXEC SQL SELECT (to_date(local_time.arr,'yyyymmdd')) —
(to_date(lst_date.arr','yyyymmdd)) INTO :between_days
FROM DUAL;
printf("the between_daysis:%d",between_days);
这是一段oracle proc程序。只是部分!!!

参考技术A 只要把两个日期相减就可以得到天数了,
如果后面有小数你就自己换算成小时分钟秒
比如两个日期相减后是1.56
就相当于是1天13小时26分24秒……自己算一下就行了
如果你只想以天数显示,那么在oracle中无须转换 默认就是追问

主要的问题是:EXEC SQL SELECT (to_date(local_time.arr,'yyyymmdd')) —
(to_date(lst_date.arr','yyyymmdd)) INTO :between_days
FROM DUAL; 这里面的local_time.arr 和 lst_date.arr 是两个变量。这是一段oracle proc 程序。

追答

那你写的是对的啊,最后between_days就是那个天数了,就是between_days前不需要加冒号了。
只要把between_days打印出来或者在插到另一张表里就可以看到结果啦

本回答被提问者采纳
参考技术B -- 举个例子,用早的时间减去晚的时间就好了,看:
select trunc(sysdate-to_date('2014-12-01','yyyy-mm-dd')) as "天数" from dual;

追问

主要的问题是:EXEC SQL SELECT (to_date(local_time.arr,'yyyymmdd')) —
(to_date(lst_date.arr','yyyymmdd)) INTO :between_days
FROM DUAL; 这里面的local_time.arr 和 lst_date.arr 是两个变量。这是一段oracle proc 程序。

java中如何计算出两个日期之间相差多少天

如果我date1="1987-01-01"
date2="2010-01-01"
之间相差多少天??
在java中如何算。。。。。。???

思路就是根据它们相差的毫秒数除以每天的毫秒数(60*60*24*1000),代码如下:

public static void main(String[] args) throws ParseException

String date1="1987-01-01";

String date2="2010-01-01";

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");

Date d1=sdf.parse(date1);

Date d2=sdf.parse(date2);

long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(60*60*24*1000);

System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");

运行结果如下:

扩展资料:

Java使用以下三种方法来比较两个日期:

1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。

2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。

3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行

例如:

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

以上实例编译运行结果如下:

当前时间为: 2018-09-14 10:16:34

参考资料:

Java官方API接口-Date

菜鸟教程-Java 日期时间

参考技术A java可以使用计算日期的天数差,以下是详细代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test16
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1=sdf.parse("2012-09-08 10:10:10");
Date d2=sdf.parse("2012-09-15 00:00:00");
System.out.println(daysBetween(d1,d2));

System.out.println(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));


/**
* 计算两个日期之间相差的天数
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);

return Integer.parseInt(String.valueOf(between_days));


/**
*字符串的日期格式的计算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);

return Integer.parseInt(String.valueOf(between_days));


参考技术B import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test
public static void main(String[] args) throws ParseException
String date1="1987-01-01";
String date2="2010-01-01";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(3600*24*1000);
System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");


本回答被提问者采纳
参考技术C public long differ(Date date1, Date date2)
return date2.getTime() / 86400000 - date1.getTime()/ 86400000;

参考资料:http://blog.csdn.net/solomonxu/archive/2007/04/27/1587237.aspx

参考技术D (big.getTime() - small.getTime()) / (1000 * 60 * 60 * 24);

以上是关于SOS 如何在oracle 中计算两日期之间有多少天???并且这两日期都是已经赋了日期的变量:的主要内容,如果未能解决你的问题,请参考以下文章

java中如何计算出两个日期之间相差多少天

关于计算两日期之间经过多少天的超巧妙算法

excel中如何计算出 两个日期之间相差是多少年、月、日? 日期的格式是:2011-9-7。

php如何计算两个日期中间有多少天,并每过一天减1

如何在 oracle sql 中提取两个日期之间的天数?

如何使用c#计算两天内的日期时间? [复制]