day_18 date、time

date

代表了一个特定的时间,精确到毫秒
在这里插入图片描述
对于Date类 使用的是java.util包下的 Date表示特定的时间。
在这里插入图片描述
时间日期类 Date的标准基准时间是 1970年1月1日00:00:00 GMT起的指定毫秒数。

构造方法

在这里插入图片描述
在这里插入图片描述

基本方法

在这里插入图片描述
在这里插入图片描述

public class DateDemo {
    public static void main(String[] args) {
        // 创建Date对象   返回系统当前时间
        Date date = new Date();
        System.out.println(date);
        //第二种构造方式 public Date(long date)
        long time = date.getTime();//返回当前时间距离1970年1月1日0:0:0的毫秒数
        Date date1 = new Date(time);
        date1.setTime(time + 100000);//重写修改时间
        System.out.println(date1.toString());
        // 比较两个时间对象是否相等  public int compareTo(Date anotherDate)
        //如果参数Date等于此Date,则值为0 ; 如果此日期在Date参数之前,该值小于0 ; 如果此日期在Date参数0则值大于0 。
        System.out.println(date.compareTo(date1));
    }
}

时间日期的格式化

public class SimpleDateFormat   extends DateFormat

SimpleDateFormat是一个具体的类 它允许格式化(日期文本),解析(文本日期)时间日期格式化的模式的表示
在这里插入图片描述

构造方法

在这里插入图片描述

常用方法

在这里插入图片描述
时间日期的格式化 格式化之后返回的是一个String类型

// 进行时间日期的格式化
//创建一个SimpleDateFormat对象  方式一
SimpleDateFormat  sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
String strDate =  sdf.format(date);
System.out.println(strDate);
//方式二
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String strDate1 = sdf1.format(date);
System.out.println(strDate1);

在这里插入图片描述
将String类型的 日期解析为Date类型

//解析
String dateStr = "2020-12-22 20:05:12";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd ");
Date date2 = sdf2.parse(dateStr);
System.out.println(date2);

在这里插入图片描述

//解析
String dateStr = "2020-12-22";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
Date date2 = sdf2.parse(dateStr);
System.out.println(date2);

在这里插入图片描述

封装一个时间日期格式化的工具类

public class DateFormatUtil {
    // 将Date类型转换为String 进行格式化
    public static  String date2Str(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }
    //将String类型转换为Date  解析
    public static Date str2Date(String strDate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date =  sdf.parse(strDate);
        return  date;
    }
}

Calendar

在这里插入图片描述
没有构造方法,使用 getInstance(); 方法获取一个calendar对象

常用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

// 获取Calendar的对象  返回系统当前的日历对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
// 获取年月日时分秒
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
int month =calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
int sec = calendar.get(Calendar.SECOND);
String str = year +"年"+ month + "月" + day +"日" +" " + hour+":"+min+":"+sec;
System.out.println(str);

修改时间

// 获取 当前日期的后10天的时间
//calendar.add(Calendar.DAY_OF_MONTH,10);
// 获取 当前日期的前10天的时间
calendar.add(Calendar.DAY_OF_MONTH,-10);

在这里插入图片描述

/*
案例:二月天
需求:获取任意一年的二月有多少天
思路:设置时间为当年的3月1号  再来获取3月1号的前一天
 */
public class CalendarDemo2 {
    public static void main(String[] args) {
       int day =   get2MonthLastDay(2052);
        System.out.println(day);
    }
    public  static  int get2MonthLastDay(int year){
        Calendar calendar = Calendar.getInstance();
        //此时设置当前时间为某年的3月1号
        calendar.set(year,2,1);
        // 2月的最后一天就是3月1好的 前一天
        calendar.add(Calendar.DAY_OF_MONTH,-1);
        // 获取年月日时分秒
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return  day;
    }
}

可变参数

public class VarDemo {
    //计算两个整数的和
    //计算三个整数的和  对于上述两个要求 可以用方法重载解决
    //但是  可能出现对于求和的参数 的个数不确定的情况  可以使用可变参数来解决
    //可变参数的使用和 数组相同
    public static int sum(int a,int ... b){
        for(int i = 0 ; i < b.length;i++){
            a+= b[i];
        }
        return  a;
    }

    public static void main(String[] args) {
        int s= sum(1,2,3,4,5,3);
        System.out.println(s);
    }
}

注意事项

1. 可变参数可单独作为方法的形参;
2. 可变参数必须位于形参列表的最后位置;
3. 在一个方法的形参列表中 可变参数只能有一个;
4. 可变参数的类型可以是任意类型
public static int sum(int c,int d ,int ... b){
    int a = 0 ;
    for(int i = 0 ; i < b.length;i++){
        a+= b[i];
    }
    return  a;
}
public class VarDemo {
    //计算两个整数的和
    //计算三个整数的和  对于上述两个要求 可以用方法重载解决
    //但是  可能出现对于求和的参数 的个数不确定的情况  可以使用可变参数来解决
    //可变参数的使用和 数组相同
    public static int sum(int c,int d ,Object ... b){
        Integer a = 0 ;
        for(int i = 0 ; i < b.length;i++){
            Integer bb = (Integer) b[i];
            a+= bb;
        }
        return  a;
    }

    public static void main(String[] args) {
        int s= sum(1,2,3,4,5,3);
        System.out.println(s);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
select * from ( SELECT P.PATIENT_ID, P.VISIT_ID, PM.NAME, PM.SEX, P.ADMISSION_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_ADMISSION_TO ) AS DEPT_ADM, P.DISCHARGE_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_DISCHARGE_FROM ) AS DEPT_DIS, DATEDIFF( DAY, P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) AS INPAT_DAYS, P.DOCTOR_IN_CHARGE --datediff(day, P.ADMISSION_DATE_TIME,P.DISCHARGE_DATE_TIME) as zyts FROM PAT_VISIT P INNER JOIN PAT_MASTER_INDEX PM ON PM.PATIENT_ID = P.PATIENT_ID WHERE select * from ( SELECT P.PATIENT_ID, P.VISIT_ID, PM.NAME, PM.SEX, P.ADMISSION_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_ADMISSION_TO ) AS DEPT_ADM, P.DISCHARGE_DATE_TIME, ( SELECT TOP 1 DP.DEPT_NAME FROM DEPT_DICT DP WHERE DP.DEPT_CODE = P.DEPT_DISCHARGE_FROM ) AS DEPT_DIS, DATEDIFF( DAY, P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) AS INPAT_DAYS, P.DOCTOR_IN_CHARGE --datediff(day, P.ADMISSION_DATE_TIME,P.DISCHARGE_DATE_TIME) as zyts FROM PAT_VISIT P INNER JOIN PAT_MASTER_INDEX PM ON PM.PATIENT_ID = P.PATIENT_ID WHERE P.DISCHARGE_DATE_TIME >= '2016-01-01' AND P.DISCHARGE_DATE_TIME < = '2023-07-10' AND DATEDIFF( DAY,P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) >= 30 ) t order by inpat_days desc P.DISCHARGE_DATE_TIME >= '2016-01-01' AND P.DISCHARGE_DATE_TIME < = '2023-07-10' AND DATEDIFF( DAY,P.ADMISSION_DATE_TIME, P.DISCHARGE_DATE_TIME ) >= 30 ) t order by inpat_days desc 帮我把这段sql优化一下
07-25

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值