Skip to content

Commit 7af652c

Browse files
committed
support time zone in date format function
1 parent 122d72e commit 7af652c

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>org.nlpcn</groupId>
55
<artifactId>elasticsearch-sql</artifactId>
6-
<version>6.2.3.1</version>
6+
<version>6.2.3.2</version>
77
<packaging>jar</packaging>
88
<description>Query elasticsearch using SQL</description>
99
<name>elasticsearch-sql</name>

src/main/java/org/nlpcn/es4sql/SQLFunctions.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public static Tuple<String, String> function(String methodName, List<KVValue> pa
5757
functionStr = date_format(
5858
Util.expr2Object((SQLExpr) paramers.get(0).value).toString(),
5959
Util.expr2Object((SQLExpr) paramers.get(1).value).toString(),
60+
2 < paramers.size() ? Util.expr2Object((SQLExpr) paramers.get(2).value).toString() : null,
6061
name);
6162
break;
6263

@@ -155,10 +156,12 @@ public static Tuple<String, String> split(String strColumn, String pattern, int
155156
return new Tuple<>(name, script);
156157
}
157158

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) {
159160
String name = "date_format_" + random();
160161
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()))");
162165
} else {
163166
return new Tuple<>(name, strColumn + "; def " + name + " = new SimpleDateFormat('" + pattern + "').format(new Date(" + valueName + " - 8*1000*60*60))");
164167
}

src/main/java/org/nlpcn/es4sql/Util.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
1212
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
1313
import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
14-
import org.nlpcn.es4sql.domain.Field;
1514
import org.nlpcn.es4sql.domain.KVValue;
1615
import org.nlpcn.es4sql.exception.SqlParseException;
1716

0 commit comments

Comments
 (0)