|
7 | 7 | import com.azure.cosmos.CosmosException; |
8 | 8 | import java.io.InputStream; |
9 | 9 | import java.math.BigDecimal; |
| 10 | +import java.sql.Date; |
10 | 11 | import java.sql.SQLException; |
11 | 12 | import java.sql.Time; |
12 | 13 | import java.sql.Timestamp; |
| 14 | +import java.text.DateFormat; |
| 15 | +import java.text.SimpleDateFormat; |
13 | 16 | import java.time.*; |
14 | 17 | import java.time.format.DateTimeFormatter; |
15 | 18 | import java.time.format.DateTimeFormatterBuilder; |
@@ -175,9 +178,22 @@ public BigDecimal getBigDecimal(int columnIndex) |
175 | 178 | } |
176 | 179 |
|
177 | 180 | @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()); |
181 | 197 | } |
182 | 198 |
|
183 | 199 | @Override |
@@ -263,4 +279,27 @@ public <T> T getObject(String columnLabel, Class<T> type) |
263 | 279 | DateTimeFormatter.ofPattern("yyyy-M-d[ H:mm:ss.S]"), |
264 | 280 | DateTimeFormatter.ofPattern("yyyy-M-d[ H:mm:ss.S a]") |
265 | 281 | }; |
| 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 | + }; |
266 | 305 | } |
0 commit comments