From ae382d9803b584562c9757f525de2470a00d81be Mon Sep 17 00:00:00 2001 From: "qianhao.zhou" Date: Tue, 25 Nov 2014 11:22:27 +0800 Subject: [PATCH] support timestamp --- .../main/java/com/kylinolap/dict/DateStrDictionary.java | 14 ++++++++++---- .../src/main/java/com/kylinolap/storage/tuple/Tuple.java | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dictionary/src/main/java/com/kylinolap/dict/DateStrDictionary.java b/dictionary/src/main/java/com/kylinolap/dict/DateStrDictionary.java index 064f177..1114546 100644 --- a/dictionary/src/main/java/com/kylinolap/dict/DateStrDictionary.java +++ b/dictionary/src/main/java/com/kylinolap/dict/DateStrDictionary.java @@ -42,7 +42,8 @@ public class DateStrDictionary extends Dictionary { static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd"; - static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS"; + static final String DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS = "yyyy-MM-dd HH:mm:ss"; + static final String DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS = "yyyy-MM-dd HH:mm:ss.SSS"; static final private Map> threadLocalMap = new ConcurrentHashMap>(); @@ -87,10 +88,15 @@ public static Date stringToDate(String str, String pattern) { } public static long stringToMillis(String str) { - if (str.length() == 10) + if (str.length() == 10) { return stringToDate(str, DEFAULT_DATE_PATTERN).getTime(); - else - return stringToDate(str, DEFAULT_DATETIME_PATTERN).getTime(); + } else if (str.length() == 19) { + return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS).getTime(); + } else if (str.length() == 23) { + return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).getTime(); + } else { + throw new IllegalArgumentException("there is no valid date pattern for:" + str); + } } // ============================================================================ diff --git a/storage/src/main/java/com/kylinolap/storage/tuple/Tuple.java b/storage/src/main/java/com/kylinolap/storage/tuple/Tuple.java index de2303f..8dda7c0 100644 --- a/storage/src/main/java/com/kylinolap/storage/tuple/Tuple.java +++ b/storage/src/main/java/com/kylinolap/storage/tuple/Tuple.java @@ -135,6 +135,8 @@ public static Object convertOptiqCellValue(String strValue, String dataType) { return Double.valueOf(strValue); } else if ("decimal".equals(dataType)) { return new BigDecimal(strValue); + } else if ("timestamp".equals(dataType)) { + return Long.valueOf(DateStrDictionary.stringToMillis(strValue)); } else { return strValue; }