提交 4dcac67f authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Do not use Calendar in TRUNCATE

上级 79203296
...@@ -17,7 +17,6 @@ import java.sql.ResultSet; ...@@ -17,7 +17,6 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
...@@ -1233,32 +1232,16 @@ public class Function extends Expression implements FunctionCall { ...@@ -1233,32 +1232,16 @@ public class Function extends Expression implements FunctionCall {
} }
case TRUNCATE: { case TRUNCATE: {
if (v0.getType() == Value.TIMESTAMP) { if (v0.getType() == Value.TIMESTAMP) {
java.sql.Timestamp d = v0.getTimestamp(); result = ValueTimestamp.fromDateValueAndNanos(((ValueTimestamp) v0).getDateValue(), 0);
Calendar c = DateTimeUtils.createGregorianCalendar();
c.setTime(d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
result = ValueTimestamp.fromMillis(c.getTimeInMillis());
} else if (v0.getType() == Value.DATE) { } else if (v0.getType() == Value.DATE) {
ValueDate vd = (ValueDate) v0; result = ValueTimestamp.fromDateValueAndNanos(((ValueDate) v0).getDateValue(), 0);
Calendar c = DateTimeUtils.createGregorianCalendar(); } else if (v0.getType() == Value.TIMESTAMP_TZ) {
c.setTime(vd.getDate()); ValueTimestampTimeZone ts = (ValueTimestampTimeZone) v0;
c.set(Calendar.HOUR_OF_DAY, 0); result = ValueTimestampTimeZone.fromDateValueAndNanos(ts.getDateValue(), 0,
c.set(Calendar.MINUTE, 0); ts.getTimeZoneOffsetMins());
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
result = ValueTimestamp.fromMillis(c.getTimeInMillis());
} else if (v0.getType() == Value.STRING) { } else if (v0.getType() == Value.STRING) {
ValueString vd = (ValueString) v0; ValueTimestamp ts = ValueTimestamp.parse(v0.getString(), session.getDatabase().getMode());
Calendar c = DateTimeUtils.createGregorianCalendar(); result = ValueTimestamp.fromDateValueAndNanos(ts.getDateValue(), 0);
c.setTime(ValueTimestamp.parse(vd.getString(), session.getDatabase().getMode()).getDate());
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
result = ValueTimestamp.fromMillis(c.getTimeInMillis());
} else { } else {
double d = v0.getDouble(); double d = v0.getDouble();
int p = v1 == null ? 0 : v1.getInt(); int p = v1 == null ? 0 : v1.getInt();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论