Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Format de date (pas comme d'habitude) !!!!!!!!!

13 réponses
Avatar
J-Pierre
Bonjour,

Est-il possible de connaître le format de date par défaut (DATEFORMAT) utilisé par un serveur SQL ? Quelque chose du style SELECT
@@LANGUAGE AS..... pour la langue.

Merci d'avance
J-Pierre

10 réponses

1 2
Avatar
Ambassadeur Kosh
et pourquoi avez vous besoin du format de date ?
devrais-je dire pour qui ?

"J-Pierre" a écrit dans le message de
news:eJ6$H%
Bonjour,

Est-il possible de connaître le format de date par défaut (DATEFORMAT)


utilisé par un serveur SQL ? Quelque chose du style SELECT
@@LANGUAGE AS..... pour la langue.

Merci d'avance
J-Pierre


Avatar
J-Pierre
Bon, je voulais faire court, mais j'explique.

C'est un projet ADP comme client. Comme j'ai peur de me faire engueuler sur le NG sqlserver, mes dates sont toujours au format
AAAA/MM/DD.
exemple:

dateDel = Year(Date) & "/" & Month(Date) & "/" & Day(Date)

Set cnn = CurrentProject.Connection
strgSQL = "DELETE T907_planning_en_cours FROM T907_planning_en_cours " & _
"WHERE T907_date < '" & dateDel & "';"
cnn.Execute strgSQL, WrecordsAffected, adExecuteNoRecords

Tant que le serveur SQL est anglais, ça baigne.
J'ai voulu me connecter sur un SQL français, ça ne marche pas.

Deux possibilités:

1/changer le format de la date dans la requête SQL.
dateDel = Day(Date) & "/" & Month(Date) & "/" & Year(Date)
Mais ça ne marche plus sur mon serveur SQL anglais (prévisible.....)

2/Changer le format de date attendu par SQL serveur en rajoutant avant mon cnn.execute:
cnn.Execute "SET DATEFORMAT ymd", WrecordsAffected, adExecuteNoRecords
Là, ça marche avec les 2 serveurs.
Mais j'ai d'autres parties du projet ADP (manipulations de recordSets) qui ne marchent plus, je suppose qu'à l'ouverture du projet,
Access va chercher un certain nombre d'infos sur le serveur SQL (comme ce format de date), et que si je les modifie, Access a des
problèmes.

Je voudrais donc:

Récupérer le DATEFORMAT par défaut
exécuter un SET DATEFORMAT ymd
Executer ma requête
Restaurer le DATEFORMAT par défaut

Evidemment, je suis aussi intéressé par des solutions plus simples......

Pour J-Pierre (, je fais tout comme dit Mr Microsoft.......)

et pourquoi avez vous besoin du format de date ?
devrais-je dire pour qui ?


Avatar
Julien
Et pourquoi n'utilises tu pas ton select @@language as ?


"J-Pierre" a écrit dans le message de
news:
Bon, je voulais faire court, mais j'explique.

C'est un projet ADP comme client. Comme j'ai peur de me faire engueuler sur
le NG sqlserver, mes dates sont toujours au format
AAAA/MM/DD.
exemple:

dateDel = Year(Date) & "/" & Month(Date) & "/" & Day(Date)

Set cnn = CurrentProject.Connection
strgSQL = "DELETE T907_planning_en_cours FROM T907_planning_en_cours " &
_
"WHERE T907_date < '" & dateDel & "';"
cnn.Execute strgSQL, WrecordsAffected, adExecuteNoRecords

Tant que le serveur SQL est anglais, ça baigne.
J'ai voulu me connecter sur un SQL français, ça ne marche pas.

Deux possibilités:

1/changer le format de la date dans la requête SQL.
dateDel = Day(Date) & "/" & Month(Date) & "/" & Year(Date)
Mais ça ne marche plus sur mon serveur SQL anglais (prévisible.....)

2/Changer le format de date attendu par SQL serveur en rajoutant avant mon
cnn.execute:
cnn.Execute "SET DATEFORMAT ymd", WrecordsAffected, adExecuteNoRecords
Là, ça marche avec les 2 serveurs.
Mais j'ai d'autres parties du projet ADP (manipulations de recordSets) qui
ne marchent plus, je suppose qu'à l'ouverture du projet,
Access va chercher un certain nombre d'infos sur le serveur SQL (comme ce
format de date), et que si je les modifie, Access a des
problèmes.

Je voudrais donc:

Récupérer le DATEFORMAT par défaut
exécuter un SET DATEFORMAT ymd
Executer ma requête
Restaurer le DATEFORMAT par défaut

Evidemment, je suis aussi intéressé par des solutions plus simples......

Pour J-Pierre (, je fais tout comme dit Mr
Microsoft.......)

et pourquoi avez vous besoin du format de date ?
devrais-je dire pour qui ?


Avatar
J-Pierre
Parce que @@LANGUAGE me retourne la langue par défaut et pas le format de date....
Avatar
jmn
Vous trouverez dans les CD msdn sous la référence Q173907 un article qui
semble correspondre exactement à votre interrogation.
Si vous n'êtes pas MSDN où si vous ne trouvez pas l'article sur le site de
Microsoft, faîtes moi signe par le groupe.
Avatar
Ambassadeur Kosh
ok, alors je dirais bien qu'il y a une notion de parametre qui traine dans
l'API, genre

strgSQL = "DELETE FROM MyTable WHERE date < @MonParam ;"

query.SetSQL(strgSQL) ;
query.Setparam("MonParam",MonObjetDeTypeDate) ;

query.Execute( ) ;

un truc de ce gout, qui rend independant de la syntaxe.
Avatar
J-Pierre
La solution de Mr l'ambassadeur va me donner beaucoup beaucoup beaucoup de travail.....

Mais l'idée de Julien (utiliser @@LANGUAGE) n'est pas mauvaise du tout. Car il y a un dateformat par défaut attaché à chaque langue.

Avant d'exécuter une requête:
------------------------------
Set cnn = CurrentProject.Connection

strgSQL = "SELECT @@LANGUAGE AS langue "
rst.Open strgSQL, cnn, adOpenForwardOnly, adLockReadOnly
SqlLangueOrig = rst!langue
rst.Close

cnn.Execute "SET LANGUAGE us_english", WrecordsAffected, adExecuteNoRecords

Après exécution
----------------
cnn.Execute "SET LANGUAGE " & SqlLangueOrig, WrecordsAffected, adExecuteNoRecords

cnn.Close
Set cnn = Nothing

En mettant tout ça dans des modules, y'aura pas trop de code à aligner......
Merci à tout le monde.......

J-Pierre
Avatar
J-Pierre
Ca, c'est encore mieux...................

"Med Bouchenafa [MVP]" a écrit dans le message de news:
Utilise le format ISO et cela marche avec toutes les langues
YYYYMMDD (sans séparateur)

--
Salutations
Med Bouchenafa


Avatar
J-Pierre
Et en plus, ça marche super bien, merci beaucoup

J-Pierre
Avatar
Med Bouchenafa [MVP]
Utilise le format ISO et cela marche avec toutes les langues
YYYYMMDD (sans séparateur)

--
Salutations
Med Bouchenafa
TETRASET
75015 Paris
"J-Pierre" a écrit dans le message de news:
eJ6$H#
Bonjour,

Est-il possible de connaître le format de date par défaut (DATEFORMAT) utilisé par un serveur SQL


? Quelque chose du style SELECT
@@LANGUAGE AS..... pour la langue.

Merci d'avance
J-Pierre









1 2