数据库中timestamp对应实体的查询和插入
Posted IT的鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中timestamp对应实体的查询和插入相关的知识,希望对你有一定的参考价值。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date actualArrive;
Date creationDate = TimeUtil.string2TimeStamp(TimeUtil.glzDateChangeString(create));
rfcMap.put("creationDate", creationDate);
public class TimeUtil {
private static Date date = new Date();
private static Calendar calendar = Calendar.getInstance();
private final static String DATE_PARSE_HOUR = "yyyy-MM-dd HH:mm:ss";
private final static String ZONE_OFFSET = "+8";
/**
* string转时间戳
*
* @param str date
* @return Date
* @throws ParseException ParseException
*/
public static Date string2TimeStamp(String str) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date2 = null;
try {
date2 = simpleDateFormat.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date2;
}
/**
* string2Date
*
* @param str date
* @return Date
* @throws ParseException ParseException
*/
public static Date string2Date(String str) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = simpleDateFormat.parse(str);
return date2;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static String getBeginOfThisMonth() {
calendar.setTime(date);
int index = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DATE, (1 - index));
Date time = calendar.getTime();
// 设置时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化前一天
String defaultStartDate = sdf.format(time);
defaultStartDate = defaultStartDate + " 00:00:00";
return defaultStartDate;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static String getBeginOfThisWeek() {
calendar.setTime(date);
int index = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DATE, (1 - index));
Date time = calendar.getTime();
// 设置时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化前一天
String defaultStartDate = sdf.format(time);
defaultStartDate = defaultStartDate + " 00:00:00";
return defaultStartDate;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static String getBeginOfLastMonth() {
calendar.add(Calendar.MONTH, -1);
// 上月
int lastMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
// 按格式输出
// 上月最后一天
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");
// 上月第一天
String time = sdf2.format(calendar.getTime());
return time;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static String getNowOfLastMonth() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
calendar.add(Calendar.MONTH, -1);
// 上月
String timeLast = sdf.format(calendar.getTime());
int lastMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
// 按格式输出
// 上月第一天
return timeLast;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static Date getNowOfLastWeek() {
Date dBefore = new Date();
// 把当前时间赋给日历
calendar.setTime(date);
// 设置为7天前
calendar.add(Calendar.DAY_OF_MONTH, -7);
// 得到七天前的时间
dBefore = calendar.getTime();
return dBefore;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static Date getBeginDayOfLastWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
dayOfWeek += 7;
}
cal.add(Calendar.DATE, 1 - dayOfWeek - 7);
return cal.getTime();
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static int getDayOfMonth() {
Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
int day = aCalendar.getActualMaximum(Calendar.DATE);
return day;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static int getPassDaysOfMonth() {
calendar.setTime(date);
int index = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DATE, (1 - index));
// 设置时间格式
SimpleDateFormat sdf = new SimpleDateFormat("dd");
// 格式化前一天
String defaultStartDate = sdf.format(date);
defaultStartDate = defaultStartDate + "";
int i;
i = Integer.parseInt(defaultStartDate);
return i;
}
/**
* 想要得到几个月前的月份
*
* @param i i
* @return String
*/
public static String getBeginLastMonth(int i) {
calendar.add(Calendar.MONTH, -i);
// 上月
int lastMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
// 按格式输出
// 上月最后一天
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");
// 上月第一天
String time = sdf2.format(calendar.getTime());
return time;
}
/**
* 获取当月开始时间
*
* @param i i
* @return 时间
*/
public static String getEndLastMonth(int i) {
calendar.add(Calendar.MONTH, -i);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 上月
int lastMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);
// 按格式输出
// 上月最后一天
String time = sdf.format(calendar.getTime());
// 上月第一天
return time;
}
/**
* 获取当月开始时间
*
* @return 时间
*/
public static int getNumOfMonth() {
SimpleDateFormat sdf = new SimpleDateFormat("MM");
String format = sdf.format(date);
try {
return Integer.parseInt(format);
} catch (NumberFormatException e) {
e.printStackTrace();
return 0;
}
}
/**
* 获取当月开始时间
*
* @param date date
* @param day day
* @return 时间
*/
public static Date rollDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, day);
return cal.getTime();
}
/**
* 获取当月开始时间
*
* @param date1 date1
* @param date2 date2
* @return 时间
*/
public static int calcDayOffset(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
int day1 = cal1.get(Calendar.DAY_OF_YEAR);
int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
if (year1 != year2) { // 同一年
int timeDistance = 0;
for (int i = year1; i < year2; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { // 闰年
timeDistance += 366;
} else { // 不是闰年
timeDistance += 365;
}
}
return timeDistance + (day2 - day1);
} else { // 不同年
return day2 - day1;
}
}
/**
* 获取当月开始时间
*
* @param dateStr dateStr
* @return 时间
*/
public static Date stringToDate(String dateStr) {
// 获得一个时间格式的字符串
// 获得SimpleDateFormat类,我们转换为yyyy-MM-dd的时间格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
try {
// 使用SimpleDateFormat的parse()方法生成Date
date = sf.parse(dateStr);
// 打印Date
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 获取当月开始时间
*
* @param dateStr dateStr
* @return 时间
*/
public static Date stringToDatePrecise(String dateStr) {
// 获得一个时间格式的字符串
// 获得SimpleDateFormat类,我们转换为yyyy-MM-dd的时间格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 使用SimpleDateFormat的parse()方法生成Date
date = sf.parse(dateStr);
// 打印Date
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* date2 比 date1 大多数天
*
* @param date1 date1
* @param date2 date2
* @return days
*/
public static int differentDaysByMillisecond(Date date1, Date date2) {
return (int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24));
}
/**
* date转string
*
* @param date date
* @return String
*/
public static String dateToString(Date date) {
// 获得一个时间格式的字符串
// 获得SimpleDateFormat类,我们转换为yyyy-MM-dd的时间格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sf.format(date);
}
/**
* 获取指定月份的开始时间
*
* @param year 年
* @param month 月
* @return 时间
*/
public static Date getBeginTime(int year, int month) {
YearMonth yearMonth = YearMonth.of(year, month);
LocalDate localDate = yearMonth.atDay(1);
LocalDateTime startOfDay = localDate.atStartOfDay();
ZonedDateTime zonedDateTime = startOfDay.atZone(ZoneId.of("Asia/Shanghai"));
return Date.from(zonedDateTime.toInstant());
}
/**
* 获取指定月份的结束时间
*
* @param year 年
* @param month 月
* @return 时间
*/
public static Date getEndTime(int year, int month) {
YearMonth yearMonth = YearMonth.of(year, month);
LocalDate endOfMonth = yearMonth.atEndOfMonth();
LocalDateTime localDateTime = endOfMonth.atTime(23, 59, 59, 999);
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
return Date.from(zonedDateTime.toInstant());
}
/**
* 获取两个时间之间差多少分钟
*
* @param endDate endDate
* @param nowDate nowDate
* @return 分钟数
*/
public static long getTwoDateMin(Date endDate, Date nowDate) {
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少分钟
long min = diff / 60 / 1000 + 1;
// 计算差多少秒//输出结果
return Math.abs(min);
}
/**
* 获取当月开始时间
*
* @param date date
* @param day day
* @return 时间
*/
public static Date rollDayToNine(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, day);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd 09:00:00");
String format = sf.format(cal.getTime());
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 使用SimpleDateFormat的parse()方法生成Date
date = sf2.parse(format);
// 打印Date
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 获取当月开始时间
*
* @param plannedEnd plannedEnd
* @return String
* @throws ParseException
*/
public static String glzDateChangeString(String plannedEnd) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd\\'T\\'HH:mm:ss");
Date date2 = new Date();
try {
date2 = sdf.parse(plannedEnd);
} catch (ParseException e) {
e.printStackTrace();
}
String formatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date2);
return formatDate;
}
/**
* dateToStrLong
*
* @param dateDate plannedEnd
* @return String
*/
public static String dateToStrLong(Date dateDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(dateDate);
return dateString;
}
/**
* 对时间端的集合进行合并
* 只要存在交集的进行合并并且合并次数加1
*
* @param arrayList List<Map<String, Object>>
* @return List<Map < String, Object>>
* @throws ApplicationException
*/
public static List<Map<String, Object>> calucationTimeList(List<Map<String, Object>> arrayList)
throws ApplicationException {
if (!CollectionUtil.isNullOrEmpty(arrayList)) {
for (int index = 0; index < arrayList.size(); index++) {
Map<String, Object> objMap = arrayList.get(index);
String startTime = (String) objMap.get("startTime");
String endTime = (String) objMap.get("endTime");
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime start = LocalDateTime.parse(startTime, df);
LocalDateTime end = LocalDateTime.parse(endTime, df);
for (int varIndex = 0; varIndex < arrayList.size(); varIndex++) {
String beginTime = (String) arrayList.get(varIndex).get("startTime");
String overTime = (String) arrayList.get(varIndex).get("endTime");
int num = Integer.parseInt(objMap.get("num").toString());
LocalDateTime begin = LocalDateTime.parse(beginTime, df);
LocalDateTime over = LocalDateTime.parse(overTime, df);
if (varIndex == index) {
continue;
} else if (start.isAfter(begin) && start.isBefore(over) && end.isAfter(over)) {
betweenStartAndEnd(startTime, beginTime, num, objMap, arrayList, varIndex);
return calucationTimeList(arrayList);
} else if (start.isBefore(begin) && end.isBefore(over) && end.isAfter(start)) {
// 前段时间开始时间在后段开始时间之前 前段结束时间在后段开始时间与结束时间之间
endTime = overTime;
num++;
objMap.put("endTime", endTime);
objMap.put("num", num);
arrayList.remove(varIndex);
return calucationTimeList(arrayList);
} else if (start.isAfter(begin) && end.isBefore(over)) {
// 前段时间整个包含在后段时间之间
startTime = beginTime;
endTime = overTime;
num++;
objMap.put("startTime", startTime);
objMap.put("endTime", endTime);
objMap.put("num", num);
arrayList.remove(varIndex);
return calucationTimeList(arrayList);
} else if (start.isBefore(begin) && end.isAfter(over)) {
// 后段时间整个包含在前段时间之间
num++;
objMap.put("num", num);
arrayList.remove(varIndex);
return calucationTimeList(arrayList);
}
}
}
}
return arrayList;
}
private static void betweenStartAndEnd(String startTime, String beginTime, int num,
Map<String, Object> objMap, List<Map<String, Object>> arrayList,int varIndex) {
// 前段时间开始时间在后段开始时间与结束时间之间 结束时间大于等于后段结束时间
startTime = beginTime;
num++;
objMap.put("startTime", startTime);
objMap.put("num", num);
arrayList.remove(varIndex);
}
}
以上是关于数据库中timestamp对应实体的查询和插入的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate HQL查询 插入 更新(update)实例
转: Hibernate HQL查询 插入 更新(update)实例
sqlserver数据库中为datetime类型,通过myeclipse逆向工程生成实体类中属性为啥是java.sql.Timestamp
插入新实体时,NSFetchResultsController 排序不起作用
Oracle数据库使用mybatis的时候,实体类日期为Date类型,mybatis里面定义的是Date类型,插入的时候,时分秒全部是12:00:00问题