IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Requêtes dynamiques et date


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Requêtes dynamiques et date
    Bonjour.
    Je n'arrive pas à construire ma requête correctement, j'obtiens le message :
    messsages : Msg 102, Level 15, State 1, Line 2
    Incorrect syntax near '12'.
    lorsque j'execute ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    DECLARE @query nvarchar(500), @nom_table_purge nvarchar(500), @nom_colonne_purge nvarchar(500), 
    @date_Purge_datetime datetime
     
    SET @nom_table_purge = 'FT_delegation'
    SET @nom_colonne_purge = 'end_date' --est au format datetime
    SET @date_Purge_datetime = CAST(DATEADD(m, -8, getdate())AS datetime)
     
    --Solution 1
    SET @query = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' < ' + CAST(@date_Purge_datetime AS NVARCHAR)
     
    --Solution 2
    SET @query = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    WHERE ' + @nom_colonne_purge + ' < ' + CAST(@date_Purge_datetime AS NVARCHAR)
     
    EXEC (@query );
    Je ne sais pas quoi faire de mon paramètre @date_Purge_datetime (par ex Jan 12 2016 5:44PM) alors que le end_date est par ex 2015-07-31 00:00:00.000


    Merci de votre aide, je me noie.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quand on écrit une requête "dynamique" le plus sûr est de commencer par l'écrire entièrement en dur (sans variables), puis de remplacer petit à petit chaque portion dynamique du code par la variable correspondante.
    A l'inverse, pour la tester et comprendre où elle pêche, il faut l'afficher avant de l'exécuter. Et souvent l'erreur devient évidente
    Dans ton cas, il manque assurément quelque chose pour encadrer ta valeur de date, voire la convertir...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    Le type DATETIME (obsolète depuis la version 2008) utilise par défaut le format ISO court qui est : 'AAAAMMJJ hh:mm;ss.nnn' pour exprimer une date heure sous forme littérale.
    Le type DATETIME2 (remplaçant du type DATETIME depuis la version 2008) utilise par défaut le format ISO long qui est : 'AAAA-MM-JJ hh:mm;ss.nnn' pour exprimer une date heure sous forme littérale.
    Vous avez utilisé du DATETIME comme type avec le format du DATETIME2...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour et merci de vos réponses.
    @al1_24 : oui je les ai écrites en dur d'abord.
    @SQLpro Je vais chercher comment convertir mes dates, je savais qu'il fallait chercher par là, j’ignorai les problèmes de passage de DATETIME à DATETIME2, je n'ai pas le choix pour les données de départ.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    As-tu essayé d'afficher ta requête avant de l'exécuter ?
    Ce serait - à mon avis - très utile à la compréhension du message d'erreur associé à l'exécution.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bonjour.
    Oui j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT (*) FROM dbo.FT_delegation
    			WHERE end_date < Jan 13 2016  9:57AM
    donne :
    Msg 102, Level 15, State 1, Line 2
    Incorrect syntax near '13'.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Et comme ça, ça ne fonctionnerait pas mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT (*) FROM dbo.FT_delegation
    			WHERE end_date < CAST('Jan 13 2016  9:57AM' AS datetime)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Ben oui, merci, ça marche mieux mais pourtant mon @date_Purge_datetime est déjà au format datetime.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    DECLARE @query1 nvarchar(500), @query2 nvarchar(500), @nom_table_purge nvarchar(500), @nom_colonne_purge nvarchar(500), 
    @date_Purge_datetime datetime
     
     
    SET @nom_table_purge = 'FT_delegation'
    SET @nom_colonne_purge = 'end_date' --est au format datetime
    SET @date_Purge_datetime = CAST(DATEADD(m, -8, getdate())AS datetime)
     
    --PRINT N'' + CAST(@date_Purge_datetime AS VARCHAR)	--Jan 13 2016  9:54AM
     
    --Solution 1
    SET @query1 = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' < ' + CAST(@date_Purge_datetime AS DATETIME)
     
    PRINT @query1
    donne
    Msg 241, Level 16, State 1, Line 12
    Conversion failed when converting date and/or time from character string.

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    DECLARE @query1 nvarchar(500), @query2 nvarchar(500), @nom_table_purge nvarchar(500), @nom_colonne_purge nvarchar(500), 
    @date_Purge_datetime datetime
     
     
    SET @nom_table_purge = 'FT_delegation'
    SET @nom_colonne_purge = 'end_date' --est au format datetime
    SET @date_Purge_datetime = CAST(DATEADD(m, -8, getdate())AS datetime)
     
    --PRINT N'' + CAST(@date_Purge_datetime AS VARCHAR)	--Jan 13 2016  9:54AM
     
    --Solution 1
    SET @query1 = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' <   CAST(' + @date_Purge_datetime + 'AS DATETIME)'
     
    PRINT @query1
    Msg 241, Level 16, State 1, Line 12
    Conversion failed when converting date and/or time from character string.

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Là encore, tu n'as pas pris le temps d'afficher la requête construite pour comprendre ce qui pose problème.
    Tel que tu l'as programmé, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE end_date < CAST(Jan 13 2016  9:57AMAS datetime)
    Normal que ça retourne une erreur : une chaîne de caractères doit être encadrée de guillemets.

    Essaye avec cette version, ça devrait te donner un autre résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ' + @nom_colonne_purge + ' <   CAST(''' + @date_Purge_datetime + ''' AS DATETIME)'
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Merci de m'aider,
    je désespère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    DECLARE @query1 nvarchar(500), @query2 nvarchar(500), @nom_table_purge nvarchar(500), @nom_colonne_purge nvarchar(500), 
    @date_Purge_datetime datetime
     
     
    SET @nom_table_purge = 'FT_delegation'
    SET @nom_colonne_purge = 'end_date' --est au format datetime
    SET @date_Purge_datetime = CAST(DATEADD(m, -8, getdate())AS datetime)
     
    PRINT N'' + CAST(@date_Purge_datetime AS VARCHAR)	--Jan 13 2016 11:50AM
     
    --Solution 1
     
    SET @query1 = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' < CAST(''' + @date_Purge_datetime + ''' AS DATETIME)'
    PRINT 	@query1
    me donne :
    Jan 13 2016 11:50AM
    Msg 241, Level 16, State 1, Line 13
    Conversion failed when converting date and/or time from character string.

  11. #11
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Pour mieux t'aider, il faudrait que tu affiches la requête préparée...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Je pensais que c'était mais alors c'est quoi la requête préparée ?

  13. #13
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Tu l'as vue... mais pas nous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  14. #14
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Ben non, il ne veut pas la construire et il ne m'affiche rien :
    Msg 241, Level 16, State 1, Line 13
    Conversion failed when converting date and/or time from character string.

  15. #15
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    J'ai un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    DECLARE @query1 nvarchar(500), @query2 nvarchar(500), @nom_table_purge nvarchar(500), @nom_colonne_purge nvarchar(500), 
    @date_Purge_datetime datetime
     
     
    SET @nom_table_purge = 'FT_delegation'
    SET @nom_colonne_purge = 'end_date' --est au format datetime : 2015-07-31 00:00:00.000
    SET @date_Purge_datetime = CAST(DATEADD(m, -8, getdate())AS datetime)
     
     
    PRINT N'' + CAST(@date_Purge_datetime AS VARCHAR)	--Jan 13 2016 11:50AM
     
    DECLARE @date_Purge_nvarchar NVARCHAR(10)= CONVERT(nvarchar(10), @date_Purge_datetime,120)
     
    --Solution 1
     
    SET @query1 = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' < '  + @date_Purge_nvarchar 
    PRINT 	@query1		
     
    EXECUTE sp_executesql @query1
    qui fonctionne :
    Jan 13 2016 2:00PM
    SELECT COUNT (*) FROM dbo.FT_delegation
    WHERE end_date < 2016-01-13

    (1 row(s) affected)
    Est ce bien propre ?

  16. #16
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    As-tu compris pourquoi ça ne fonctionnait pas comme tu l'attendais dans le premier cas ?
    Est-ce que la requête qui ne tombe pas en erreur te donne bien le résultat attendu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  17. #17
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    As-tu compris pourquoi ça ne fonctionnait pas comme tu l'attendais dans le premier cas ?
    Non.
    Est-ce que la requête qui ne tombe pas en erreur te donne bien le résultat attendu ?
    Oui.

  18. #18
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Est-ce que la requête qui ne tombe pas en erreur te donne bien le résultat attendu ?
    Non il me donne toujours 0 même avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @date_Purge_datetime = CAST(DATEADD(m, 0, getdate())AS datetime)
    alors qu'il y a 2669 entrées dans la table inférieures à la date du jour.

  19. #19
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    En effet, il y a de fortes chances pour que SELECT COUNT (*) FROM dbo.FT_delegation WHERE end_date < 2016-01-13 soit interprété comme SELECT COUNT (*) FROM dbo.FT_delegation WHERE end_date < 2002
    D'où l'intérêt d'encadrer les chaines de caractères et de forcer explicitement les conversions de type (CAST).
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  20. #20
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Problème avec les apostrophes.
    J'ai trouvé.
    Merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET @query1 = N'SELECT COUNT (*) FROM dbo.' + @nom_table_purge + '
    			WHERE ' + @nom_colonne_purge + ' < '' ' + @date_Purge_nvarchar + ' '' '

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle9i] Requête dynamique et date
    Par Drizzt [Drone38] dans le forum SQL
    Réponses: 7
    Dernier message: 22/04/2008, 10h15
  2. [pb requête sql] Requête dynamique
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/09/2005, 12h31
  3. Erreur de conversion et requête dynamique dans une procédure
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/08/2005, 15h12
  4. [Procs stockées] [Débutant] Requête dynamique
    Par stailer dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2005, 14h29
  5. Requête dynamique en pagination
    Par pascal_fluck@hotmail.com dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/03/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo