diff --git a/src/main/java/net/sf/jsqlparser/expression/TimestampValue.java b/src/main/java/net/sf/jsqlparser/expression/TimestampValue.java index 5c5a2c170..71db99285 100644 --- a/src/main/java/net/sf/jsqlparser/expression/TimestampValue.java +++ b/src/main/java/net/sf/jsqlparser/expression/TimestampValue.java @@ -29,9 +29,17 @@ public class TimestampValue implements Expression { private Timestamp value; - + private char quotation = '\''; public TimestampValue(String value) { - this.value = Timestamp.valueOf(value.substring(1, value.length() - 1)); + if (value == null) { + throw new java.lang.IllegalArgumentException("null string"); + } else { + if (value.charAt(0) == quotation) { + this.value = Timestamp.valueOf(value.substring(1, value.length() - 1)); + } else { + this.value = Timestamp.valueOf(value.substring(0, value.length())); + } + } } @Override diff --git a/src/test/java/net/sf/jsqlparser/expression/TimestampValueTest.java b/src/test/java/net/sf/jsqlparser/expression/TimestampValueTest.java new file mode 100644 index 000000000..ac74ccd71 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/expression/TimestampValueTest.java @@ -0,0 +1,31 @@ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.JSQLParserException; +import org.junit.Test; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +/** + * @author Linyu Chen + */ +public class TimestampValueTest { + + @Test + public void testTimestampValue_issue525() throws JSQLParserException { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); + String currentDate = dateFormat.format(new Date()); + TimestampValue tv = new TimestampValue(currentDate); + System.out.println(tv.toString()); + } + + @Test + public void testTimestampValueWithQuotation_issue525() throws JSQLParserException { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); + String currentDate = dateFormat.format(new Date()); + TimestampValue tv = new TimestampValue("'" + currentDate + "'"); + System.out.println(tv.toString()); + } +}