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

ASP Discussion :

Date universelle pour insertion dans Base de données


Sujet :

ASP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut Date universelle pour insertion dans Base de données
    Bonjour,

    Je viens de m'apercevoir que mon intranet ne fonctionnait pas sous un SQL Server en anglais... car mes formats de date ne sont pas ...

    Je sais que je peux faire une fonction qui retourne le bon format de date suivant le serveur si il est US ou FR... mais j'aimerais savoir si il est possible d'envoyer un format universelle (qui marcherait aussi sur tout autre type de base de données).

    D'avance merci

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Hello,
    Citation Envoyé par developpez.com
    ATTENTION : Le standard ISO adopté pour le SQL repose sur le format AAAA-MM-JJ. Il est ainsi valable jusqu’en l’an 9999… ou AAAA est l’année sur 4 chiffres, MM le mois sur deux chiffres, et JJ le jour. Pour l'heure le format ISO est hh:mm:ss.nnn (n étant le nombre de millisecondes)


    Exemple :


    1999-03-26 22:54:28.123
    est le 26 mars 1999 à 22h 54m, 28s et 123 millisecondes.
    Donc le format par défaut est le format US...

    [edit]url: http://sql.developpez.com/sqlaz/fondements/[/edit]

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    La seul solution universelle que j'ai trouvé est d'inserer la date sous son veritable format: double.
    La date correspond au nb de jours écoulés depuis le 31 dec 1899.
    pour tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%response.Write(cdbl(now()))%>
    Ce nb peut ensuite etre converti au format de ton choix en utilisant les fonctions appropriées.

    A+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut
    Effectivement en double ca passe nikel sur les deux systèmes :-).

    Merci bcp.

    Donc le format par défaut est le format US...
    heu oué d'accord mais SQL Server configuré en Francais ca ne prend pas en compte ce format.

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par [DreaMs
    ]heu oué d'accord mais SQL Server configuré en Francais ca ne prend pas en compte ce format.
    : :
    Si il s'agit du client, alors il faut changer la valeur de session.LCID

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 211
    Points : 85
    Points
    85
    Par défaut
    Non je répondais simplement à Fiquet qui m'indiquait que le format universelle était celui US. Et je sais que si l'on essai de faire une insertion avec ce format sur un SQL Server Fr ca ne fonctionnait pas.

    La notation en format "double" marche très bien.

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Ah ok.

    Il n'a pas forcement tord concernant les requetes SQL.
    Il faut absolument cadrer/blinder la saisie d'une date depuis le navigateur, car c'est effectivement le format US qui est envoyé au serveur.
    Explication: si tu saisis 01/02/2005 au format français (1er fevrier), le serveur comprendra 01/02/2005 (2 février). A la sooumission de ton formulaire, il faut donc que tu saches parfaitement où sont placés le jour le mois, que tu recomposes la date et la convertisse au format double avant de l'insérer dans ta table.

    A+

  8. #8
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par [DreaMs
    ]heu oué d'accord mais SQL Server configuré en Francais ca ne prend pas en compte ce format.
    Oui effectivement ce détail est assez sensible.. Je voulais plutôt parler de la norme quoi.

    Pour le système en double ça veut dire quoi exactement? Il faut juste paramètrer la date dans la base de données ou il faut d'abord convertir la date en nombre de jours écoulés (entier)?

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Considérant les internautes, il faut les deux

    Dans l'ordre, il faut que :
    1- tes dates dans ta base soient au format double. Tu fais un simple changement de type date => float(8 ) pour SQL. C'est le format qu'il a choisi qd j'ai exporté ma base Access sous SQL server.
    2- tu convertisses la date au format double avant l'insertion: cdbl(date()) pour seulement la date et cdbl(now()) pour avoir les secondes aussi.

    Pour moi, definir une date au format "date" (dd/mm ou mm/dd) et envoyer la date en brute ds une base est dangereux.

    A+

  10. #10
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Ok pour l'astuce mais bon moi je travaille avec datetime et aucun problème

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

Discussions similaires

  1. Contrôle date avant insertion dans base de données
    Par Invité dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 24/02/2014, 18h15
  2. [MySQL] Fonction de date pour insertion dans base MySQL
    Par jubourbon dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2010, 16h27
  3. Réponses: 2
    Dernier message: 23/11/2006, 10h37
  4. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  5. Réponses: 8
    Dernier message: 11/05/2005, 14h48

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