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

MS SQL Server Discussion :

Conversion Date


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut Conversion Date
    Je n'arrive pas a trouver la syntaxe correcte pour faire une requete dans une procedure stockee avec deux parametre de type datetime. J'ai a peu pres tout essayer, cast ou convert, formats datetime ou varchar dans tous les sens .....

    Le champ Date_Time est au format datetime 'dd/mm/yyyy hh:mm:ss', je veux faire la requete uniquement sur les dates : les deux parametres ont comme format 'dd/mm/yyy'

    J'ai comme erreur 'Error Converting datetime from character string' la plupart du temps.



    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
    21
    22
    23
    CREATE PROCEDURE spInsertDataDay (@stNomTable varchar(14), 
                   @dtDateMin datetime, 
                   @dtDateMax datetime) AS 
     
    DECLARE @stSQLStatement varchar(8000) 
     
       SET NOCOUNT ON 
     
       SET @stSQLStatement = 'INSERT INTO ' + @stNomTable + 
       ' (' + 
       'Date_Time, ring_num, 
    .... 
    .... 
       ') ' + 
       'SELECT ' + 
       'Date_Time, ring_num, 
    .... 
    .... 
       'FROM ARCHIVE_MYHISTO1' + 
       'WHERE (CONVERT(datetime, Date_Time, 103) >= ''' + @dtDate + ''')' 
     
       EXEC (@stSQLStatement) 
    GO

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut
    Je sais que c'est penible d'avoir plusieurs posts du meme sujet mais les conversion de date en SQL ne le sont pas moins ...

    Voila ce que j'ai reussi a trouver comme solution, mais je ne pense pas que ce soit la plus simple ...
    Conversion de mes parametres de type date en varchar, puis reconversion dans l'autre sens pour la comparaison ...


    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
    21
    22
    23
    24
    CREATE PROCEDURE spInsertDataDay (@stNomTable varchar(14), 
    					@dtDateMin datetime, 
    					@dtDateMax datetime) AS
     
    DECLARE @stSQLStatement varchar(8000)
    DECLARE @stDateMin varchar(10)
    DECLARE @stDateMax varchar(10)
     
    	SET NOCOUNT ON
     
    	SET DATEFORMAT DMY
     
    	SET @stDateMin = CONVERT(varchar(10), @dtDateMin, 103)
    	SET @stDateMax = CONVERT(varchar(10), @dtDateMax, 103)
     
    	SET @stSQLStatement = 'INSERT INTO ' + @stNomTable +
    	' (' +
    	'Date_Time, ..........' +
    	') ' +
    	'SELECT ' +
    	'Date_Time, ............. ' +
    	'FROM ARCHIVE_MYHISTO1 ' +
    	'WHERE (CAST(Date_Time AS datetime) > CAST(''' + @stDateMin + ''' AS datetime)) AND ' +
    	'CAST(Date_Time AS datetime)  < CAST(''' + @stDateMax + ''' AS datetime))'

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    1) utiliser TOUJOURS dans toutes tes opérations le même format de date

    2) faire au début de chaque session un SET DATEFORMAT xxx

    3) n'utiliser que le CAST, jamais le CONVERT

    4) si des châines de caractères ne repectent pas le point 1) les convertir dans le langage client AVANT de les utiliser dans des requêtes proc stock...

    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 confirmé
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Par défaut
    Pour les points 1 et 3 j'aimerais bien, mais j'ai un format de date complet dans ma table (avec heures) et je ne veux faire une requete que sur la date, c'est la seule solution que j'ai trouve pour y parvenir !!! Les parametres de la requete sont des variables globales crees a partir d'une requete precedente et modifiee pour avoir un format correct avec un ActiveXScriptTask en VBS (parce que la date dans cette derniere requete est d'un format string yy-mmydd hh:m:ss et comme la conversion string-date de ce format est impossible, j'ai du faire (grace a wololaurent) une fonction ...)

    Cependant merci pour les conseils, j'ai bien compris, mais on ne fait pas toujours ce qu'on voudrais.

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

Discussions similaires

  1. conversion date timestamp vers date mysql
    Par seb0026 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/10/2005, 19h48
  2. conversion date/compteur
    Par Papagei dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/09/2005, 12h17
  3. Conversion date ->heures
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 16h08
  4. [CONVERSION] DATE
    Par Mister_FX dans le forum ASP
    Réponses: 3
    Dernier message: 05/07/2004, 10h07
  5. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05

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