begin process at 2012 05 26 14:22:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une procédure stockée

 > 

DATETIME SQL SERVER AU SECOURS !!!!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

DATETIME SQL SERVER AU SECOURS !!!!!!

mercredi 29 décembre 2004 à 11:27:01 | DATETIME SQL SERVER AU SECOURS !!!!!!

MACHOMAN

bonjour, j'ai plusieurs pb avec les datetime sous sql server :

1 - j'ai deux champs datetime, dans le premier il y a une date dans le second une heure, quand je veux les concatener dans un autre champ avec un '+' (champDate + champHeure), il me soustrait deux jours !!!
ex :
champDate champHeure concat
12/04/2004 15:14:00 10/12/2004 15:14:00 !!!

2 - Quand je veux faire l'inverse, c'est à dire séparer ma date et mon heure de mon champ concatené j'utilise
CONVERT(SMALLDATETIME, champDateSmall,103)
ici je veux dans mon champDateSmall que la date, bah non il me sort tout ! (mon champDateSmall est bien déclaré en SMALLDATETIME) !!


AU SECOURS PLEASEEEEEEEEEEE !!!!!
mercredi 29 décembre 2004 à 21:55:57 | Re : DATETIME SQL SERVER AU SECOURS !!!!!!

fabrice69

Administrateur CodeS-SourceS
Pour la première question, Il faut utiliser le cast ou convert vers du varchar

Par exemple :
SELECT CAST(champDate AS Varchar(10)) + CAST(champHeure AS Varchar(10))

J'ai pris 10 en taille, mais il faut l'adapter à ton cas

Pour la seconde question, Cela vient du type lui même SmallDateTime, voila une copie de l'aide MSDN sur ce type :

----------------------------------
datetime et smalldatetime
Types de données de date et d'heure permettant de représenter la date et l'heure de la journée.

datetime

Données de date et d'heure comprises entre le 1er janvier 1753 et le 31 décembre 9999, avec une précision d'un trois centième de seconde (soit 3,33 millisecondes ou 0.00333 secondes). Les valeurs sont arrondies à des incréments de .000, .003 ou .007 secondes, comme cela est illustré dans le tableau suivant :

Exemple Résultat arrondi
01/01/98 23:59:59.999 1998-01-02 00:00:00.000
01/01/98 23:59:59.995,
01/01/98 23:59:59.996,
01/01/98 23:59:59.997, ou
01/01/98 23:59:59.998 1998-01-01 23:59:59.997
01/01/98 23:59:59.992,
01/01/98 23:59:59.993,
01/01/98 23:59:59.994 1998-01-01 23:59:59.993
01/01/98 23:59:59.990 ou
01/01/98 23:59:59.991 1998-01-01 23:59:59.990


Microsoft® SQL Server? rejette toutes les valeurs qu'il ne peut identifier comme date comprise entre 1753 et 9999.

smalldatetime

Données de date et d'heure comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute. Les valeurs de secondes utilisée avec smalldatetime inférieures ou égales à 29,998 sont arrondies à la minute inférieure ; les valeurs supérieures ou égales à 29,999 sont arrondies à la minute supérieure.

--returns time as 12:35
SELECT CAST('2000-05-08 12:35:29.998' AS smalldatetime)
GO
--returns time as 12:36
SELECT CAST('2000-05-08 12:35:29.999' AS smalldatetime)
GO

Notes
Microsoft SQL Server stocke de manière interne les valeurs de type datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets contiennent le nombre de jours écoulés avant ou après la date de base (base date) du 1er janvier 1900, qui sert de référence au système. Les valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du jour représentée par le nombre de millièmes de seconde après minuit.

Le type de donnée smalldatetime stocke les dates et les heures du jour avec une précision inférieure à celle du type datetime. SQL Server stocke les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les deux premiers octets contiennent le nombre de jours après le premier janvier 1900. Les deux autres octets stockent le nombre de minutes écoulées après minuit. Ce type de données permet de stocker les dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.

-------

Ainsi un type smalldatetime contient aussi les seconde comme le datetime mormal. Voila d'ailleurs la différence entre ces 2 type de données :

-----
datetime et smalldatetime
datetime

Données de date et d'heure comprises entre le 1er janvier 1753 et le 31 décembre 9999, avec une précision de trois centièmes de seconde ou de 3,33 millisecondes.

smalldatetime

Données de date et d'heure comprise entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.
-----

Si tu ne veux que la date elle même il faut bien choisir le format de sorti pour n'avoir que la date, pour l'afficher en 103 il faut convertir en nvarchar pas en smalldatetime car c'est déja un smalldatetime.

Donc pour la seconde question la réponse est a mon sens :
CONVERT(NVARCHAR(10), champDateSmall,103)


Romelard Fabrice (Alias F___)
jeudi 30 décembre 2004 à 09:17:16 | Re : DATETIME SQL SERVER AU SECOURS !!!!!!

MACHOMAN

j'ai un autre pb,
j'ai un champ varchar dans lequel j'ai une date avec ce format :

14/12/2004 15:34:00

Je veux séparer la date (14/12/2004) dans un champ datetime et l'heure (15:34:00) dans un autre champ datetime.

Pour la date j'y arrive, je fais :
ChampDate = SUBSTRING (CAST(ChampVarChar AS varchar(50)),1,11)
Et j'ai bien dans mon champDate 14/12/2004

Pour mon champTime c'est une autre histoire !
quoi que je fasse, un substring, cast, convert.... j'ai toujours
14/12/2004 15:34:00 ou
1/1/1900 15:34:00

J'ai essayé ta solution CONVERT(NVARCHAR(10), champDateSmall,109), mais ca ne marche pas, pourtant le CONVERT est bien sensé convertir des chaines en date ou heure ! enfin je crois

http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0901/fr/html/dbrffr9/00000145.htm
CONVERT ( type de données, expression [ , style_format ] )
style_format L'argument style_format est un numéro de code de style qui décrit le format de date à utiliser pour convertir des chaînes en dates ou en heures et vice versa. Les valeurs de l'argument style_format ont les significations suivantes

Au secours

jeudi 30 décembre 2004 à 10:16:34 | Re : DATETIME SQL SERVER AU SECOURS !!!!!!

fabrice69

Administrateur CodeS-SourceS
Dans ce cas, il faut utiliser les fonctions internes pour cette demande :
- DAY
- MONTH
- YEAR

Voila d'ailleurs toutes les fonctions SQL pour les manipulations de Date :
----
Fonction Propriété de déterminisme
DATEADD Déterministe
DATEDIFF Déterministe
DATENAME Non déterministe
DATEPART Cette fonction est déterministe, sauf si elle est utilisée en tant que DATEPART (dw, date). Le paramètre dw, élément de date weekday, dépend de la valeur configurée par SET DATEFIRST, qui définit le premier jour de la semaine.
DAY Déterministe
GETDATE Non déterministe
GETUTCDATE Non déterministe
MONTH Déterministe
YEAR Déterministe
-----

Pour l'heure, je pense qu'il faut proceder autrement, via le convert et le N° 108 :

CONVERT (VARCHAR(8), TonChampDateHeure, 108)

Voila d'ailleurs la liste des formats possible pour les données datetime :

Sachant que la différence entre la série 1... 9 et 101 ... 109 est que le 10x rend l'année avec le siecle.

-----
Sans siècle (yy) Avec siècle (yyyy)
Standard
Entrée/Sortie**
- 0 ou 100 (*) Par défaut mon dd yyyy hh:miAM (or PM)
1 101 USA mm/dd/yy
2 102 ANSI yy.mm.dd
3 103 Anglais/Français dd/mm/yy
4 104 Allemand dd.mm.yy
5 105 Italien dd-mm-yy
6 106 - dd mon yy
7 107 - Mon dd, yy
8 108 - hh:mm:ss
- 9 ou 109 (*) Valeur par défaut + millièmes de secondes mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 USA mm-dd-yy
11 111 Japon yy/mm/dd
12 112 ISO yymmdd
- 13 ou 113 (*) Valeur par défaut Europe + millièmes de secondes dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 ou 120 (*) ODBC canonique yyyy-mm-dd hh:mi:ss(24h)
- 21 ou 121 (*) ODBC canonique (avec millièmes de secondes) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(no spaces)
- 130* Kuwaiti dd mon yyyy hh:mi:ss:mmmAM
- 131* Kuwaiti dd/mm/yy hh:mi:ss:mmmAM
----



Romelard Fabrice (Alias F___)


Cette discussion est classée dans : secours, date, sql, server, datetime


Répondre à ce message

Sujets en rapport avec ce message

sql server 2000 + probleme de datetime ! [ par jimmy69 ] Bonjour,Dans une db sous sql server 2000 on a une table qui utilise une colonne de type datetime.J'aimerais savoir quelle est la query SQL à utiliser sql server datetime [ par brmdevinci ] svp j'execute cette requete " select * from personne where date_nais='12/02/1986'" la resultat est un tableau vide sachant que quand j'ai remplit la SQL Server: Suppression fichiers par rapport à une date [ par stan08 ] Bonjour,J'aimerais connaitre le moyen (s'il existe) de supprimer dans un répertoire tous les fichiers dont la date de modification (ou création) est s [SQL Server] Modifier/forcer l'heure d'un DATETIME [ par Sieurcoug ] Bonjour,Dans une fonction, j'ai besoin de forcer l'heure d'un DATETIME.Par exemple si l'heure de création est inférieure à 8h00, il faut retenir 8h00 sql server [ par mahamourta ] salut svp lorsque je fais une insertion dans une base de donnee sous sql server ,le format de la date est annee-mois-jour,alors que je veux un form Insertion de la date seulement (SQL Server 2005) [ par OmarEK ] Salut,Est ce qu'il y a un moyen pour inserer que la date dans une table d'une base de données SQL au lieu de mettre la date et l'heure, tout en suppos [SQL] date - n heures [ par remifalcon ] Bonjour, après avoir chercher différents tuto, je viens vers vous pour ce problème:Je cherche à faire une requète SQL me renvoyant toutes les lignes ( Probleme de DATE sous SQL server [ par youyou08 ] J'ai un probleme avec la création d'une variable Date sous SQL server J'ai taper le code suivant pour créer ma variable DECLARE @date DATETIME SET @d VB.net 2005 et SQL 2005 Express : Prbl DateTime [ par morleys ] Bonjour à vous tous,Je coince voilà quelque temps sur un probleme d'enregistrement de date SQL 2005.Si j'ai toto = Cdate(Now())        Pour info toto test si string (datetime) est correct. [ par tmcuh ] Voilà un big soucis avec SQL. Je récupère une donnée de type char[10] provenant d'une table (qui ne m'appartient pas) et je dois tester à l'interrieur


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales