j'ai 3 variables entières qui contiennent resp. jour, mois, an d'une
date.
Je transforme en date ainsi :
set @Result =( cast(@Day as varchar) + '/' + cast(@Month as
varchar)+ '/' + cast(@Year as varchar) )
(Result est un datetime) (SQL Server Express 2005)
Ca fonctionne, mais ca me géne de lui filer la chaine en format de
date francais. Je crains que le jour qu'il y ait un bug potentiel sur
ce point.
J'ai deux questions :
- j'imagine que ca marche en format fr parceque ma base est en
classement french_ci_as ?
- y a t il un moyen d'écrire ça pour être sur que ca marche, sans
aucun probléme de localisation ?
Merci !
Guillaume
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something.
Robert A. Heinlein
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
gjaydie_spam_die
On Sun, 02 Mar 2008 21:22:37 +0100, Guillaume JAY wrote:
Je transforme en date ainsi : set @Result =( cast(@Day as varchar) + '/' + cast(@Month as varchar)+ '/' + cast(@Year as varchar) )
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction (car c'est une fonction) dans une clause where (dans le select, ca fonctionne tres bien) de comparaison avec une date, que je mets au format anglais...
J'ai vu des solutions a base de SET DATEFORMAT Mais a priori, j'ai pas le droit de mettre cette ligne dans une fonction.
Guillaume
On Sun, 02 Mar 2008 21:22:37 +0100, Guillaume JAY
<gdie_spammer_diejay@free.fr> wrote:
Je transforme en date ainsi :
set @Result =( cast(@Day as varchar) + '/' + cast(@Month as
varchar)+ '/' + cast(@Year as varchar) )
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction
(car c'est une fonction) dans une clause where (dans le select, ca
fonctionne tres bien) de comparaison avec une date, que je mets au
format anglais...
J'ai vu des solutions a base de
SET DATEFORMAT
Mais a priori, j'ai pas le droit de mettre cette ligne dans une
fonction.
On Sun, 02 Mar 2008 21:22:37 +0100, Guillaume JAY wrote:
Je transforme en date ainsi : set @Result =( cast(@Day as varchar) + '/' + cast(@Month as varchar)+ '/' + cast(@Year as varchar) )
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction (car c'est une fonction) dans une clause where (dans le select, ca fonctionne tres bien) de comparaison avec une date, que je mets au format anglais...
J'ai vu des solutions a base de SET DATEFORMAT Mais a priori, j'ai pas le droit de mettre cette ligne dans une fonction.
Guillaume
gjaydie_spam_die
On Sun, 02 Mar 2008 22:01:04 +0100, wrote:
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction (car c'est une fonction) dans une clause where (dans le select, ca fonctionne tres bien) de comparaison avec une date, que je mets au format anglais...
En fait, le probléme vient que ma base SQL Server 2005 n'accepte que les conversion 'JJ/MM/AAAA' vers DateTime.
Je reitere ma question l est ce que c'est du au classement French_CI_AS ou est ce que c'est indiqué ?
(Sinon, pour connvertir JJ,MM,AAAA en date, j'ai trouvé cela :
create function Date(@Year int, @Month int, @Day int) -- returns a datetime value for the specified year, month and day -- Thank you to Michael Valentine Jones for this formula (see comments). returns datetime as begin return dateadd(month,((@Year-1900)*12)+@Month-1,@Day-1) end go
On Sun, 02 Mar 2008 22:01:04 +0100, gjaydie_spam_die@free.fr wrote:
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction
(car c'est une fonction) dans une clause where (dans le select, ca
fonctionne tres bien) de comparaison avec une date, que je mets au
format anglais...
En fait, le probléme vient que ma base SQL Server 2005 n'accepte que
les conversion 'JJ/MM/AAAA' vers DateTime.
Je reitere ma question l est ce que c'est du au classement
French_CI_AS ou est ce que c'est indiqué ?
(Sinon, pour connvertir JJ,MM,AAAA en date, j'ai trouvé cela :
create function Date(@Year int, @Month int, @Day int)
-- returns a datetime value for the specified year, month and day
-- Thank you to Michael Valentine Jones for this formula (see
comments).
returns datetime
as
begin
return dateadd(month,((@Year-1900)*12)+@Month-1,@Day-1)
end
go
Alors, ca m'a déjà fait un probléme, quand j'ai mis cette fonction (car c'est une fonction) dans une clause where (dans le select, ca fonctionne tres bien) de comparaison avec une date, que je mets au format anglais...
En fait, le probléme vient que ma base SQL Server 2005 n'accepte que les conversion 'JJ/MM/AAAA' vers DateTime.
Je reitere ma question l est ce que c'est du au classement French_CI_AS ou est ce que c'est indiqué ?
(Sinon, pour connvertir JJ,MM,AAAA en date, j'ai trouvé cela :
create function Date(@Year int, @Month int, @Day int) -- returns a datetime value for the specified year, month and day -- Thank you to Michael Valentine Jones for this formula (see comments). returns datetime as begin return dateadd(month,((@Year-1900)*12)+@Month-1,@Day-1) end go
j'ai 3 variables entières qui contiennent resp. jour, mois, an d'une date.
Je transforme en date ainsi : set @Result =( cast(@Day as varchar) + '/' + cast(@Month as varchar)+ '/' + cast(@Year as varchar) )
(Result est un datetime) (SQL Server Express 2005)
Ca fonctionne, mais ca me géne de lui filer la chaine en format de date francais. Je crains que le jour qu'il y ait un bug potentiel sur ce point. J'ai deux questions : - j'imagine que ca marche en format fr parceque ma base est en classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux français...
- y a t il un moyen d'écrire ça pour être sur que ca marche, sans aucun probléme de localisation ?
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
Merci !
Guillaume Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. Robert A. Heinlein
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Guillaume JAY a écrit :
Bonjour,
j'ai 3 variables entières qui contiennent resp. jour, mois, an d'une
date.
Je transforme en date ainsi :
set @Result =( cast(@Day as varchar) + '/' + cast(@Month as
varchar)+ '/' + cast(@Year as varchar) )
(Result est un datetime) (SQL Server Express 2005)
Ca fonctionne, mais ca me géne de lui filer la chaine en format de
date francais. Je crains que le jour qu'il y ait un bug potentiel sur
ce point.
J'ai deux questions :
- j'imagine que ca marche en format fr parceque ma base est en
classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux
français...
- y a t il un moyen d'écrire ça pour être sur que ca marche, sans
aucun probléme de localisation ?
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien
le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet :
http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
Merci !
Guillaume
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something.
Robert A. Heinlein
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
j'ai 3 variables entières qui contiennent resp. jour, mois, an d'une date.
Je transforme en date ainsi : set @Result =( cast(@Day as varchar) + '/' + cast(@Month as varchar)+ '/' + cast(@Year as varchar) )
(Result est un datetime) (SQL Server Express 2005)
Ca fonctionne, mais ca me géne de lui filer la chaine en format de date francais. Je crains que le jour qu'il y ait un bug potentiel sur ce point. J'ai deux questions : - j'imagine que ca marche en format fr parceque ma base est en classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux français...
- y a t il un moyen d'écrire ça pour être sur que ca marche, sans aucun probléme de localisation ?
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
Merci !
Guillaume Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. Robert A. Heinlein
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
gjaydie_spam_die
On Sun, 02 Mar 2008 22:48:42 +0100, Fred BROUARD wrote:
- j'imagine que ca marche en format fr parceque ma base est en classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux français...
Ce que je comprend pas vis a vis de ce que vous me dites, c'est que j'avais un autre probléme dans un autre outil, ou l'insertion d'une date au format anglais plantait (pour des problemes de mois et de jour) parceque l'user etait réglé dans sql-server comme utilisant la langue par defaut : french.
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
C'est génial ça... (larticle, et le format)
Juste, pour rendre l'article encore plus génial, je pense que ca aurait été bien de parler de la saisie ISO des heures (et des dates/heures)
L'article ne le dit pas, ainsi que le n° ISO : 8601 sauf erreur, toujours utile pour complément.
(genre, pour retrouver ca : http://en.wikipedia.org/wiki/Iso_date )
Merci, vraiment, quand je pense que ca fait des années que je fais des bricolages...
Guillaume
On Sun, 02 Mar 2008 22:48:42 +0100, Fred BROUARD
<brouardf@club-internet.fr> wrote:
- j'imagine que ca marche en format fr parceque ma base est en
classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux
français...
Ce que je comprend pas vis a vis de ce que vous me dites, c'est que
j'avais un autre probléme dans un autre outil, ou l'insertion d'une
date au format anglais plantait (pour des problemes de mois et de
jour) parceque l'user etait réglé dans sql-server comme utilisant la
langue par defaut : french.
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien
le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet :
http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
C'est génial ça... (larticle, et le format)
Juste, pour rendre l'article encore plus génial, je pense que ca
aurait été bien de parler de la saisie ISO des heures (et des
dates/heures)
L'article ne le dit pas, ainsi que le n° ISO : 8601 sauf erreur,
toujours utile pour complément.
(genre, pour retrouver ca :
http://en.wikipedia.org/wiki/Iso_date
)
Merci, vraiment, quand je pense que ca fait des années que je fais des
bricolages...
On Sun, 02 Mar 2008 22:48:42 +0100, Fred BROUARD wrote:
- j'imagine que ca marche en format fr parceque ma base est en classement french_ci_as ?
non, mais parceque votre outil est installé en paramètre régionaux français...
Ce que je comprend pas vis a vis de ce que vous me dites, c'est que j'avais un autre probléme dans un autre outil, ou l'insertion d'une date au format anglais plantait (pour des problemes de mois et de jour) parceque l'user etait réglé dans sql-server comme utilisant la langue par defaut : french.
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
oui au format AAAAMMJJ sans aucun séparateur. Attention : respectez bien le nombre de chiffres => complétion avec zéro.
Lisez l'article que nous avons écrit à ce sujet : http://baptiste-wicht.developpez.com/tutoriel/ms-sql/datetime/
C'est génial ça... (larticle, et le format)
Juste, pour rendre l'article encore plus génial, je pense que ca aurait été bien de parler de la saisie ISO des heures (et des dates/heures)
L'article ne le dit pas, ainsi que le n° ISO : 8601 sauf erreur, toujours utile pour complément.
(genre, pour retrouver ca : http://en.wikipedia.org/wiki/Iso_date )
Merci, vraiment, quand je pense que ca fait des années que je fais des bricolages...
Guillaume
Patrice
[coupé]
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête (sans doute "langue par défaut" ou "set dateformat", le "classement" c'est encore autre chose).
L'utilisation explicite du format ISO (toujours interprété correctement qq que soit le réglage du serveur) ou le passage des valeurs via des paramètres dans les requêtes supprime ce problème...
[coupé]
[coupé]
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
Le problème est que si la date est écrite dans une requête avec un format
national spécifique, il faut que le serveur utilise ce même format national
spécifique lors de l'interpréation de la requête (sans doute "langue par
défaut" ou "set dateformat", le "classement" c'est encore autre chose).
L'utilisation explicite du format ISO (toujours interprété correctement qq
que soit le réglage du serveur) ou le passage des valeurs via des paramètres
dans les requêtes supprime ce problème...
Et quan dje l'ai mis en anglais, comme les autres, pas de souci.
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête (sans doute "langue par défaut" ou "set dateformat", le "classement" c'est encore autre chose).
L'utilisation explicite du format ISO (toujours interprété correctement qq que soit le réglage du serveur) ou le passage des valeurs via des paramètres dans les requêtes supprime ce problème...
[coupé]
Pierre Goiffon
Patrice wrote:
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et non à l'ensemble du serveur, sauf erreur ?
Patrice wrote:
Le problème est que si la date est écrite dans une requête avec un format
national spécifique, il faut que le serveur utilise ce même format national
spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et
non à l'ensemble du serveur, sauf erreur ?
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et non à l'ensemble du serveur, sauf erreur ?
Patrice
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la langue par défaut peut-être définie au niveau du serveur et peut ensuite etre supplantée connexion par connexion.
-- Patrice
"Pierre Goiffon" a écrit dans le message de news: 47ce61d1$0$16999$
Patrice wrote:
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et non à l'ensemble du serveur, sauf erreur ?
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la
langue par défaut peut-être définie au niveau du serveur et peut ensuite
etre supplantée connexion par connexion.
--
Patrice
"Pierre Goiffon" <pgoiffon@free.fr.invalid> a écrit dans le message de news:
47ce61d1$0$16999$426a34cc@news.free.fr...
Patrice wrote:
Le problème est que si la date est écrite dans une requête avec un format
national spécifique, il faut que le serveur utilise ce même format
national spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et
non à l'ensemble du serveur, sauf erreur ?
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la langue par défaut peut-être définie au niveau du serveur et peut ensuite etre supplantée connexion par connexion.
-- Patrice
"Pierre Goiffon" a écrit dans le message de news: 47ce61d1$0$16999$
Patrice wrote:
Le problème est que si la date est écrite dans une requête avec un format national spécifique, il faut que le serveur utilise ce même format national spécifique lors de l'interpréation de la requête
Le paramètre régional côté serveur est lié à la session de connexion et non à l'ensemble du serveur, sauf erreur ?
gjaydie_spam_die
On Wed, 5 Mar 2008 10:27:53 +0100, "Patrice" <http://www.chez.com/scribe/> wrote:
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la langue par défaut peut-être définie au niveau du serveur et peut ensuite etre supplantée connexion par connexion.
Je confirme, c'est ainsi.
D'ou mon probléme (idiot)
Encore merci.
Guillaume
On Wed, 5 Mar 2008 10:27:53 +0100, "Patrice"
<http://www.chez.com/scribe/> wrote:
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la
langue par défaut peut-être définie au niveau du serveur et peut ensuite
etre supplantée connexion par connexion.
On Wed, 5 Mar 2008 10:27:53 +0100, "Patrice" <http://www.chez.com/scribe/> wrote:
Humm, de mémoire - je n'ai plus ce problème depuis bien longtemps ;-) - la langue par défaut peut-être définie au niveau du serveur et peut ensuite etre supplantée connexion par connexion.
Je confirme, c'est ainsi.
D'ou mon probléme (idiot)
Encore merci.
Guillaume
gjaydie_spam_die
On Tue, 04 Mar 2008 19:12:20 +0100, wrote:
Juste, pour rendre l'article encore plus génial, je pense que ca aurait été bien de parler de la saisie ISO des heures (et des dates/heures)
Surtout qu'il semblerait que SQL Server soit pas strictement compatible ISO (notamment pour le format 8601 sans séparateur) cf http://www.karaszi.com/SQLServer/info_datetime.asp
et mes essais)
Et dans cet article y a un passage sur le fait que le format ANSI SQL (souvent refere a tor comme ISO => c'est effectivementc e qu'on m'avait dit a tort ) est dépendent des SET DATEFORMAT et LANGUAGE.
Guillaume
On Tue, 04 Mar 2008 19:12:20 +0100, gjaydie_spam_die@free.fr wrote:
Juste, pour rendre l'article encore plus génial, je pense que ca
aurait été bien de parler de la saisie ISO des heures (et des
dates/heures)
Surtout qu'il semblerait que SQL Server soit pas strictement
compatible ISO (notamment pour le format 8601 sans séparateur)
cf
http://www.karaszi.com/SQLServer/info_datetime.asp
et mes essais)
Et dans cet article y a un passage sur le fait que le format ANSI SQL
(souvent refere a tor comme ISO => c'est effectivementc e qu'on
m'avait dit a tort ) est dépendent des SET DATEFORMAT et LANGUAGE.
Juste, pour rendre l'article encore plus génial, je pense que ca aurait été bien de parler de la saisie ISO des heures (et des dates/heures)
Surtout qu'il semblerait que SQL Server soit pas strictement compatible ISO (notamment pour le format 8601 sans séparateur) cf http://www.karaszi.com/SQLServer/info_datetime.asp
et mes essais)
Et dans cet article y a un passage sur le fait que le format ANSI SQL (souvent refere a tor comme ISO => c'est effectivementc e qu'on m'avait dit a tort ) est dépendent des SET DATEFORMAT et LANGUAGE.