Problème avec la conversion du DateTime
Bonjour Tout le monde,
J'ai rencontré un sérieux problème dans un projet:cry::cry:.
Je vous explique la situation avant de procéder à un exemple concret;):
Nous possédons une table Congés et on souhaite afficher la liste des personnes qui ont demandé le congé entre 2 dates.
Après la création de la procédure stockées, une erreur s'est produite sur la conversion de la date en nvarchar.
Si vous pouvez m'aider à résoudre ce petit problème dans cet exemple:
table Personne qui comporte comme Colonnes: idPersonne int, nomPersonne nvarchar(50) et dateNaissancePersonne DateTime,
La procédure qui permet d'extraire les personnes qui ont la date de naissance > à la date passée en argument:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
--On Vérifie si la procédure existe déjà, si oui, on la supprime
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = 'Procedure_sur_Personne'
AND type = 'P')
DROP PROCEDURE [dbo].[Procedure_sur_Personne]
GO
--On passe un argument DateTime
CREATE PROCEDURE [dbo].[Procedure_sur_Personne] (@DateNaissancePersonne DateTime = null)
AS
declare @sql nvarchar(300)
BEGIN
--strip any time portion from the date passed in
SELECT @DateNaissancePersonne = Convert(datetime,convert(char(10),@DateNaissancePersonne,101))
set @sql = 'SELECT * FROM dbo.Personne';
if @DateNaissancePersonne is not null
set @sql =@sql + ' WHERE (dateNaissancePersonne > '+ @DateNaissancePersonne +')';
print @sql;
exec @sql;
END |
Si la date a été passé en argument, on va ajouter la clause WHERE qui extrait les personnes par date, sinon on affiche tous les personnes.
Quand j'exécute la procédure stockée:
Code:
1 2 3 4
|
DECLARE @DN DateTime
SET @DN = '01/01/1970'
EXECUTE [dbo].[Procedure_sur_Personne] @DN |
Je reçoi ce message d'erreur:
Citation:
Msg*241, Niveau*16, État*1, Procédure*Procedure_sur_Personne, Ligne*13
Échec de la conversion d'une valeur datetime à partir d'une chaîne de caractères.
Si vous pouvez me résoudre ce problème:cry::cry:, je serai très reconnaissant:).
Merci BCP,
Cordialement Votre,
Naoufal