# Conversion-Error bei JDBC Date Literals



## Lonsdaleit (8. Jul 2014)

Hallo,

ich verwende bei der Ausführung einiger SQL Scripte JDBC Date Literals auf einem SQL Server 2014 in Englisch.
Dies soll auch so bleiben.

Folgende Abfrage kann auf einem SQL Server 2014 in Deutsch problemlos ausgeführt werden, führt aber zu einem Fehler, wenn ich es auf einem SQL Server 2014 in Englisch ausführe:


```
SELECT vname FROM testdb WHERE bdate <= {d '2011-06-16'}
```

Error:
Msg 241, Level 16, State 3, Line 1
Conversion failed when converting date and/or time from character string.


Aus Verzweiflung habe ich folgendes bereits ausgetestet - leider ohne Erfolg:

{d '2011-16-06'}
{d '2011/06/16'}
{d '2011/16/06'}


Hatte jemand von euch bereits ein ähnliches Problem und kann mir hier weiterhelfen?

Grüße,
JLP


----------



## turtle (8. Jul 2014)

Ich rate dir, das Statement als PreparedStatement und mit java.util.Date zu versuchen, denn dann kümmert sich der JDBC-Treiber darum.

```
select vname FROM testdb WHERE bdate <= ?
```
PS: Habe gesehen, das du SQL-Skripte aufrufst. Vielleicht hilft das weiter?


----------



## Lonsdaleit (8. Jul 2014)

Grundsätzlich ist dies eine Möglichkeit.

Dies erfordert aber explizite Anpassungen an einem sehr komplexen Code.

Ich habe mich daher gefragt, ob ich dem JDBC-Driver einen Ländercode oder der gleichen mitgeben kann?!


Gruß


----------



## taro (8. Jul 2014)

das sollte dir helfen:

database - Sql query to insert datetime in SQL Server - Stack Overflow


----------

