处理数据库十位时间戳
说明
项目需求需要查询一条sql语句,发现其中时间格式为10位时间戳(1464686734)不是传统意义上的yyyymmdd格式,10位类似这种一般是秒为单位,测试环境位SQLSERVER数据库,后续生产使用ORACLE,记录一下转换方式
SQLSEREVER中转换
SQLSERVER中可以使用函数DATEADD即可以实现
SELECT DATEADD(ss, t.字段名称A, '1970-01-01 08:00:00') as 别名,t.字段名称A
FROM
表名 t
效果
ORACLE中转换
Oracle中没有DATEADD函数可以使用to_char+to_data函数使用
select sysdate, to_char( 1464686734/ ( 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00',
'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') from dual
效果
java代码中转换
最后就是JAVA中处理这类事件函数了
package com.test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeUtil {
public static void main(String[] args) {
secondTest();
}
public static void secondTest(){
long second = 1464686734;
String dateString = secondToDate(second,"yyyy-MM-dd HH:mm:ss");
System.out.println(dateString);
}
/**
* 秒转换为指定格式的日期
*/
private static String secondToDate(long second,String patten) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(second * 1000);//转换为毫秒
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat(patten);
String dateString = format.format(date);
return dateString;
}
}
控制台输出
2016-05-31 17:25:34