2017-10-06 9 views
1

J'essaie d'exécuter la procédure stockée suivante avec un paramètre de date dynamique de sorte qu'il prenne 6 mois avant hier.Exécution d'une procédure stockée avec un paramètre de date dynamique - Erreur de conversion

Quand je cours sur un serveur avec les paramètres de langue aux États-Unis cela fonctionne mais quand je cours sur un serveur avec les paramètres de langue au Royaume-Uni je reçois l'erreur:

Conversion failed when converting date and/or time from character string

J'ai essayé de convertir la date à AAAAMMJJ que cette œuvres sur tous les serveurs mais je n'ai pu - je l'ai même essayé de forcer un VARCHAR, mais pas de chance :(

y at-il un moyen d'obtenir la date au format AAAAMMJJ Espoir vous pouvez aider

USE Reports 

DECLARE @DteStart DATETIME2(3) 
DECLARE @DteEnd  DATETIME2(3) 
SELECT @DteStart = DATEADD(MM, DATEDIFF(MM, 0, CONVERT(DATE,GETDATE(),103))-6,0) 
SELECT @DteEnd = DATEADD(DD, DATEDIFF(DD, 0, CONVERT(DATE,GETDATE(),103))-1,0) 
EXEC [dbo].[spReportsMyData] @DteStart, @DteEnd; 
?.
+0

Ce code est spécifique au produit. Marquer les dbms que vous utilisez. – jarlh

+0

Si vous utilisez le type de données ['Date'] (https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) dans tous les endroits appropriés ne devrait pas être un problème. Finger avec des moments que vous ne voulez pas et des représentations à cordes est le chemin de la folie. PSA: [format de date ISO] (https://xkcd.com/1179/). – HABO

+0

Je ne peux pas le reproduire? Quel «langage» utilise exactement? – gotqn

Répondre

1

Essayez quelque chose comme ceci:

Declare 
    @StartDate as Date 
    , @EndDate as Date 

Set @EndDate = DateAdd(Day, -1, Getdate()) 
Set @StartDate = DateAdd(Month, -6, @EndDate) 

Select 
    Convert(VARCHAR(10), @StartDate, 112) As StartDate 
    , CONVERT(VARCHAR(10), @EndDate, 112) As EndDate 

Est-ce que votre procédure stockée besoin sérieusement les dates spécifiquement au format AAAAMMJJ, bien?

+0

Comme par commentaire ci-dessus le code fonctionne maintenant - merci pour la réponse :) – Baseline9