2017-07-17 2 views
1

Ayant un PreparedStament, j'ai un champ de type timestamp et je ne veux pas le mettre à une valeur fixe, mais appelez NOW() à la place. Comment je fais ça?Appelez une fonction d'un champ dans Java PreparedStatement?

J'ai essayé:

statement.setString(11, "NOW()") 

mais qui tente de définir le champ à la chaîne "NOW()" au lieu d'appeler maintenant().

Merci.

+0

Pourriez-vous partager le code de requête. –

+2

https://stackoverflow.com/questions/7626076/how-to-set-current-date-and-time-using-prepared-statement – Reimeus

Répondre

3

Vous ne pouvez pas faire cela. Mais dans le SQL de l'instruction préparée, au lieu d'utiliser ?, vous pouvez utiliser NOW().

Vous pouvez garder le ? dans le SQL, et faire statement.setDate(11, new Date());

0

Il semble que vous êtes prêt à appeler mysql now() fonction qui renvoie le timbre date-heure en cours.

Si oui, alors vous devez mettre now() en queryString comme « une partie de chaîne de la requête », si vous essayez de le mettre à l'aide preparedStatement alors il sera traité comme valeur de chaîne pur pas fonction mysql. ... voir ce http://www.mysqltutorial.org/mysql-now/

  • OU

Si vous voulez appeler une fonction de code Java appelé now() puis retirer les guillemets doubles de lui et assurez-vous qu'il returns String.

1

Appel preparedStatement.setTimeStamp(11, LocalDateTime.now().toString())

Si vous ne l'utilisez Java 8, ou si vous voulez savoir comment obtenir l'heure actuelle comme une chaîne, voir this.