从数据库中取出了两个date型数据(年-月-日),怎么算出他们相差几天

如何计算2个Date类型时间之间差了多少天~

Calendar的compareTo方法
public int compareTo(Calendar anotherCalendar)比较两个 Calendar 对象表示的时间值(从历元至现在的毫秒偏移量)。
指定者:
接口 Comparable 中的 compareTo
参数:
anotherCalendar - 要比较的 Calendar。
返回:
如果参数表示的时间等于此 Calendar 表示的时间,则返回 0 值;如果此 Calendar 的时间在参数表示的时间之前,则返回小于 0 的值;如果此 Calendar 的时间在参数表示的时间之后,则返回大于 0 的值。

用sysdate假设结束日期字段是end_date
添加这个判断条件:
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判断年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判断月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判断日相同
或者:
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15

扩展资料:注意事项
DATEDIFF返回跨两个指定日期的日期和时间边界数。
语法:DATEDIFF ( datepart , startdate , enddate )
参数:datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
startdate是返回datetime或smalldatetime值或日期格式字符串的表达式。 因为smalldatetime只精确到分钟,所以当用smalldatetime值时,秒和毫秒总是 0。
如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。
enddate是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。
返回类型:integer
注释:startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

从数据库取出来的date类型
比如:现在是2004-03-26 13:31:40

过去是:2004-01-02 11:30:24

我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒

方法一:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try

{

Date d1 = df.parse("2004-03-26 13:31:40");

Date d2 = df.parse("2004-01-02 11:30:24");

long diff = d1.getTime() - d2.getTime();

long days = diff / (1000 * 60 * 60 * 24);

}

catch (Exception e)

{

}

方法二:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.util.Date now = df.parse("2004-03-26 13:31:40");

java.util.Date date=df.parse("2004-01-02 11:30:24");

long l=now.getTime()-date.getTime();

long day=l/(24*60*60*1000);

long hour=(l/(60*60*1000)-day*24);

long min=((l/(60*1000))-day*24*60-hour*60);

long s=(l/1000-day*24*60*60-hour*60*60-min*60);

System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");

方法三:

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.util.Date begin=dfs.parse("2004-01-02 11:30:24");

java.util.Date end = dfs.parse("2004-03-26 13:31:40");

long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒

long day1=between/(24*3600);

long hour1=between%(24*3600)/3600;

long minute1=between%3600/60;

long second1=between%60/60;

System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");

====================================================

java 比较时间大小

String s1="2008-01-25 09:12:09";

String s2="2008-01-29 09:12:11";

java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.util.Calendar c1=java.util.Calendar.getInstance();

java.util.Calendar c2=java.util.Calendar.getInstance();

try

{

c1.setTime(df.parse(s1));

c2.setTime(df.parse(s2));

}catch(java.text.ParseException e){

System.err.println("格式不正确");

}

int result=c1.compareTo(c2);

if(result==0)

System.out.println("c1相等c2");

else if(result<0)

System.out.println("c1小于c2");

else

数据库的日期类型可以直接做差输出的

很简单呀

从数据库中取出了两个date型数据(年-月-日),怎么算出他们相差几天_百度...
答:long diff = d1.getTime() - d2.getTime();long days = diff / (1000 * 60 * 60 * 24);} catch (Exception e){ } 方法二:SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Date now = df.parse("2004-03-26 13:31:40");java.util.Date d...

怎么在数据库里取的两个Date类型之间的数据
答:date1="2008-8-8"date2="2008-5-5"sql="select * from biao where (date=#"date1"# or date>#"date1"#)and (date=#"date1"# or date<#"date1"#)"

C#.net中如何选出两个日期之间的数据?数据库中有datetime字段_百度知...
答:string sdate=Dorpdowmlist1.SelectValue;string edate=Dorpdowmlist2.SelectValue;sql语句:string sql="select * from table where date between '"+sdate+"' and '"+edate+"'"

从sqlserver数据库中提取日期,并把年月日分别截取出来
答:1、首先在桌面上,点击“Management Studio”图标。2、然后在该界面中,点击左上角工具栏里“新建查询”按钮。4、之后在该界面中,输入提取日期,并把年月日分别截取出来的SQL语句“select year(getdate()),month(getdate()),day(getdate())”。5、然后在该界面中,点击上方左侧的“执行”按钮。6...

java 从数据库的表中两个列获取两个时间(时间为字符型),相减,结果以...
答:将两个时间先转为date型,然后获取两个时间的格林威治时间毫秒数,计算毫秒差,再讲其转换为date型就可以了

sql中查出两个日期之间的数据
答:查出两个日期之间的数据的sql示例:select * from table_name where date>'2010-1-1' and data<'2010-5-1';其中table_name是表名,date是日期字段,and符号表示且,连接两个日期表示既满足大于2010-1-1又满足小于2010-5-1,在两个之间的数据。

数据库中两个日期型数据比较大小,如1988-09-12和当前系统时间,那个大...
答:假设要比较的两个日期 分别为 rq1,rq2 则比较:select case when rq1-rq2>=0 then '该日期rq2小于等于日期rq1' else '该日期rq2大于于等于日期rq1' end 与系统日期比较:select case when GETDATE ()-rq1>=0 then '该日期rq1小于等于当前系统日期' else '该日期rq1大于等于当前...

mysql 中,计算2个datetime类型的字段,相减得到的分钟数
答:mysql> select * from timeminus;+---+---+ | id | stime | +---+---+ | 1 | 2011-09-21 09:30:00 | | 2 | 2011-09-21 11:30:00 | | 3 | 2011-09-20 00:00:00 | +---+---+ 3 rows in set (0.02 sec)计算id=1与id=2的时间差(分钟)mysql> selec...

SQL中两个日期的查询语句怎么写?
答:1、创建测试表,create table test_date(id int, v_date date);2、插入测试数据 insert into test_date values (1, STR_TO_DATE('2016-01-02', '%Y-%m-%d'));insert into test_date values (2, STR_TO_DATE('2019-01-02', '%Y-%m-%d'));insert into test_date values (3, STR...

oracle数据库中 如何将两张表中的两个时间合在一块
答:假设主表名:M 子表名:N,M中日期字段date1,N中日期字段date2 如果M、N可以通过某字段(假设名为id)连接,则select m.date1 || '-'|| date2 from M m,N n where m.id=n.id 如果M、N不能连接,则结果会出现笛卡尔集select m.date1 || '-'|| date2 from M m,N n ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网