Skip to content

Commit ba99c76

Browse files
committed
Fix date reads
1 parent 59bc2dc commit ba99c76

File tree

1 file changed

+42
-3
lines changed

1 file changed

+42
-3
lines changed

gxcosmosdb/src/main/java/com/genexus/db/cosmosdb/CosmosDBResultSet.java

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
import com.azure.cosmos.CosmosException;
88
import java.io.InputStream;
99
import java.math.BigDecimal;
10+
import java.sql.Date;
1011
import java.sql.SQLException;
1112
import java.sql.Time;
1213
import java.sql.Timestamp;
14+
import java.text.DateFormat;
15+
import java.text.SimpleDateFormat;
1316
import java.time.*;
1417
import java.time.format.DateTimeFormatter;
1518
import java.time.format.DateTimeFormatterBuilder;
@@ -175,9 +178,22 @@ public BigDecimal getBigDecimal(int columnIndex)
175178
}
176179

177180
@Override
178-
public java.sql.Date getDate(int columnIndex)
179-
{
180-
return java.sql.Date.valueOf(getTimestamp(columnIndex).toInstant().atOffset(ZoneOffset.UTC).toLocalDate());
181+
public java.sql.Date getDate(int columnIndex) throws SQLException {
182+
Timestamp ts = getTimestamp(columnIndex);
183+
if (!ts.toString().equals(java.sql.Timestamp.from(CommonUtil.nullDate().toInstant()).toString()))
184+
{
185+
return java.sql.Date.valueOf(ts.toInstant().atOffset(ZoneOffset.UTC).toLocalDate());
186+
}
187+
String strDate = getString(columnIndex);
188+
for(String dateFormatter:DATE_FORMATTERS) {
189+
try {
190+
DateFormat dateFormat = new SimpleDateFormat(dateFormatter);
191+
java.util.Date date = dateFormat.parse(strDate);
192+
return new java.sql.Date(date.getTime());
193+
} catch (Exception ignored) {
194+
}
195+
}
196+
return new java.sql.Date(Date.from(CommonUtil.nullDate().toInstant()).getTime());
181197
}
182198

183199
@Override
@@ -263,4 +279,27 @@ public <T> T getObject(String columnLabel, Class<T> type)
263279
DateTimeFormatter.ofPattern("yyyy-M-d[ H:mm:ss.S]"),
264280
DateTimeFormatter.ofPattern("yyyy-M-d[ H:mm:ss.S a]")
265281
};
282+
private static final String [] DATE_FORMATTERS = new String[]
283+
{
284+
"yyyy-MM-dd",
285+
"yyyy-dd-MM",
286+
"dd-MM-yyyy",
287+
"MM/dd/yyyy",
288+
"dd/MM/yyyy",
289+
"yyyy/MM/dd",
290+
"EEE, dd MMM yyyy",
291+
"EEEE, dd MMMM yyyy",
292+
"Month D, Yr",
293+
"Yr, Month D",
294+
"D Month, Yr",
295+
"M/D/YY",
296+
"D/M/YY",
297+
"YY/M/D",
298+
"Mon-DD-YYYY",
299+
"DD-Mon-YYYY",
300+
"YYYYY-Mon-DD",
301+
"Mon DD, YYYY",
302+
"DD Mon, YYYY",
303+
"YYYY, Mon DD"
304+
};
266305
}

0 commit comments

Comments
 (0)