J'essaie d'exécuter un script via Management Studio.
Quelque chose comme ça:
USE [MYDB] GO DECLARE @return_value int EXEC @return_value = [dbo].[myTABLE] @AsAt = Datetime('27/01/2012 10:37:31'), @BatchID = 6754848 SELECT 'Return Value' = @return_value GO
Continuez à recevoir des erreurs en disant qu'il ne peut pas convertir de nVarChar à l'heure de la date. Quelle est la bonne façon de faire cela?
Si c'est pour SQL Server, vous devez utiliser yyyy-mm-ddThh:mi:ss.mmm
. Il sera sûr indépendamment des parameters régionaux.
Note: Le T
est important et devrait être dans la string 2012-01-27T10:37:31
.
Une autre option serait de supprimer -
20120127 10:37:31
.
Vous devez spécifier le style DateTime personnalisé et ce qui est le plus important – vous ne pouvez pas utiliser les fonctions de date et heure. Appelez SP directement afin de mettre en cache la valeur datetime convertie dans la variable temporaire grâce à Martin Smith pour ce point:
DECLARE @return_value int DECLARE @tmpDate varchar(20) SELECT @tmpDate = CONVERT(datetime, '27/01/2012 10:37:31', 103) EXEC @return_value = [dbo].[myTABLE] @AsAt = @tmpDate, @BatchID = 6754848
MSDN :
Syntaxe pour CONVERT:
CONVERT (data_type [(longueur)], expression [, style])
Reportez-vous à cet article sur Comment convertir une string en datetime dans SQL Server
Normalement, lorsque vous utilisez des strings comme dates:
DECLARE @mydate AS DATETIME SELECT @mydate = CAST('2012-01-27 10:37:31' AS DATETIME) SELECT @mydate ----------------------- 2012-01-27 10:37:31.000
Essayez d'utiliser CAST () ou CONVERT () vérifiez l'aide de T-SQL sur ces 2.
NOTE: utilisez le format mentionné par Mikael (ie'2012-01-27 10: 37: 31.000 ') Ou vous verrez probablement des erreurs comme ceci:
Msg 242, Level 16, State 3, Line 5 The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
IT est vrai ce qui a été dit à propos de convert / cast ne fonctionne pas sur un appel de procédure, donc vous devez changer un peu votre requête:
DECLARE @return_value int DECLARE @AsAt DATETIME SELECT @AsAt = CAST('2012-01-27 10:37:31' AS DATETIME) EXEC @return_value = [dbo].[myTABLE] @AsAt, @BatchID = 6754848 SELECT 'Return Value' = @return_value