@@ -57,6 +57,7 @@ public static Tuple<String, String> function(String methodName, List<KVValue> pa
57
57
functionStr = date_format (
58
58
Util .expr2Object ((SQLExpr ) paramers .get (0 ).value ).toString (),
59
59
Util .expr2Object ((SQLExpr ) paramers .get (1 ).value ).toString (),
60
+ 2 < paramers .size () ? Util .expr2Object ((SQLExpr ) paramers .get (2 ).value ).toString () : null ,
60
61
name );
61
62
break ;
62
63
@@ -155,10 +156,12 @@ public static Tuple<String, String> split(String strColumn, String pattern, int
155
156
return new Tuple <>(name , script );
156
157
}
157
158
158
- private static Tuple <String , String > date_format (String strColumn , String pattern , String valueName ) {
159
+ private static Tuple <String , String > date_format (String strColumn , String pattern , String zoneId , String valueName ) {
159
160
String name = "date_format_" + random ();
160
161
if (valueName == null ) {
161
- return new Tuple <>(name , "def " + name + " = new SimpleDateFormat('" + pattern + "').format(new Date(doc['" + strColumn + "'].value - 8*1000*60*60))" );
162
+ return new Tuple <>(name , "def " + name + " = DateTimeFormatter.ofPattern('" + pattern + "').withZone(" +
163
+ (zoneId != null ? "ZoneId.of('" + zoneId + "')" : "ZoneId.systemDefault()" ) +
164
+ ").format(Instant.ofEpochMilli(doc['" + strColumn + "'].value.getMillis()))" );
162
165
} else {
163
166
return new Tuple <>(name , strColumn + "; def " + name + " = new SimpleDateFormat('" + pattern + "').format(new Date(" + valueName + " - 8*1000*60*60))" );
164
167
}
0 commit comments