J'ai regardé autour et ne pouvais pas sembler trouver ceci demandé spécifiquement, sur SO, mais j'ai trouvé des questions similaires comme this one et beaucoup de questions concernant SQL lui-même ou C# ...sql serveur jdbc requête sur datetime colonne
Voici ce que je vois:
MapSqlParameterSource parameterSource = new MapSqlParameterSource();
//parameterSource.addValue("insertDate", DateTime.now().minusHours(1).toGregorianCalendar(), Types.TIME);
parameterSource.addValue("insertDate", new Timestamp(DateTime.now().minusHours(1).getMillis()));
List<String> contents =
_simpleJdbcTemplate
.query(
"SELECT TOP (200) inserteddatetime, Contents FROM dbo.tsomeTable WHERE (ServiceName = 'something') and inserteddatetime > :insertDate",
new RowMapper<String>() {
@Override
public String mapRow(final ResultSet rs, final int rowNum) throws SQLException {
System.out.println(rs.getTimestamp("inserteddatetime"));
return rs.getString("Contents");
}
}, parameterSource);
la requête "gèlera" \ ne fait rien \ ne retourne jamais si:
- J'utilise le décommentée objet Timestamp (tel que présenté ci-dessus)
- je remplace l'objet
parameterSource
avecDateTime.now().minusHours(1).toGregorianCalendar()
ouDateTime.now().minusHours(1).toGregorianCalendar().getTime()
- je tente la ligne en commentaire, mais changer le type de
Timestamp
Alors, voici ma question ou des questions ...
Est y-a-t-il un problème \ bug connu avec l'interrogation des colonnes datetime dans le serveur sql? Pourquoi dois-je utiliser Time
et non Timestamp
?
Je soupçonne que Spring convertit les objets de date sur Timestamp
lorsque j'interroge directement l'objet (comme démontré dans # 2).
J'ai développé plusieurs applications soutenues par SQLServer 2005/2008 et les requêtes/colonnes date/heure fonctionnent bien. Il sera utile d'inclure le ddl que vous avez utilisé pour créer la table (pour le type de colonne de insertedDatetime). – philwb
Les sons suspendus/ne revenant jamais me suspectent. Pouvez-vous exécuter une trace Sql Server et voir ce qu'il fait? http://msdn.microsoft.com/en-us/library/ms175047.aspx En outre, pouvez-vous confirmer que vous utilisez une colonne datetime avec insertDate et pas TIMESTAMP? – pd40