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

如题所述

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;
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-04
//最简单的办法
//在select TO_DAYS('1970-01-01')的结果是719528

long millis = System.currentTimeMillis();
//今天距1970-01-01的天数
long nowDays = millis  / 1000 / 60 / 60 / 24;
//所以nowDays + 719528 的结果等同于 TO_DAYS(NOW())

java实现mysql的to_days函数,要求输出结果一致
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 ma...

mysql两个日期计算天数
1、利用TO_DAYS函数 select to_days(now()) - to_days('19930908')2、利用DATEDIFF函数 select datediff(now(),'19930908')参数1 - 参数2 等于间隔天数 在 MySQL 中创建表时,对照上面的表格,选择到合适自己的数据类型。选择datetime 还是 timestamp会有点犯难。这两个日期时间类型各有优点:datet...

MySQL函数的日期时间函数
s) 函数FROM_DAYS(N )函数使用说明: 给定一个天数 N , 返回一个 DATE 值。t) 函数 FROM_UNIXTIME(unix_timestamp ) FROM_UNIXTIME(unix_timestamp ,format )函数使用说明:返回'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS 格式值的unix_timestamp 参数表示,具体格式取决于该函数是否用在字符串中或是数字语境...

MySQL函数日期时间函数
ADDDATE(date, INTERVAL expr type) 和 DATE_ADD(date, INTERVAL expr type):这两个函数用于在日期上添加指定的时间间隔,等同于 DATE_ADD()。ADDTIME(expr, expr2):将 expr2 添加到 expr 的时间部分,并返回结果。CONVERT_TZ(dt, from_tz, to_tz):转换时间日期值在时区之间的转换,返回转换...

sql语句查询mysql怎么取前几天的数据
4、在test.php文件内,使用header()方法设置文件执行的编码为utf8,避免输出中文时产生乱码。5、在test.php文件内,使用数据库账号、密码、名称,利用mysqli创建数据库连接,并使用set_charset()方法设置获得数据的编码为utf8。6、在test.php文件内,编写sql语句,使用TO_DAYS()分别获得当前的天数和...

怎样在MySQL中操作日期
select date_add(now(), interval -1 day); #当前日期天数-1 select date_add(now(), interval 1 hour);select date_add(now(), interval 1 minute);select date_add(now(), interval 1 second);select date_add(now(), interval 1 microsecond);select date_add(now(), interval ...

关于spl中SELECT使用
函数to_days可以把日期转换为天数。select last_name,first_name,birth to_days(death)-to_days(birth) as age from president 可以看看这帮家伙都活了多少天!你自己把它改为年吧。 日期值的减法运算还能帮我们计算出现在距离某个特定日期还有多长的时间,这正是我们用来找到需要在近期内缴纳会费的会员的办法:se...

mysql时间类型的用法及股票知识的学习?
1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)select time_to_sec('01:00:05'); -- 3605select sec_to_time(3605); -- '01:00:05'2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)select to_days('0000-00-00'); -- 0select to_days('2008-08...

mysql中的date类型直接比较大小是按照字符串比较还是时间戳
1、创建测试表,create table test_date1(id int, v_date date);2、插入测试数据 insert into test_date1 values(1,str_to_date('2019-08-01','%Y-%m-%d'));insert into test_date1 values(2,str_to_date('2019-10-01','%Y-%m-%d'));insert into test_date1 values(3,str_to_...

UBUNTU 中输入 date +%W显示的结果为什么会比正确的周数少一周_百度...
因为第一周是从0开始的,而不是从1。

相似回答