/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MSSQL SmallDateTime Problem
Fra : N2000


Dato : 11-03-02 09:47

Hej

Jeg køre en MSSQL server og har et problem når jeg skal lave en forespørgsel
på SmallDateTime:

Hvis jeg eks køre:

SELECT *
FROM tblTurnover
WHERE (StartDate = '12-04-01')

Er der ingen problemer. Men hvis jeg prøver at forespørge på en dato der
starter over 12-xx-xx så giver den en fejl:

[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of char data
type to smalldatetime data type resulted in an out-of-range smalldatetime
value.

det gælder for alle datoer der starter med et tal over 12 eks:

13-01-01, 13-06-02 osv...

Håber nogen kan hjælpe...

MVH Peter M



 
 
N2000 (11-03-2002)
Kommentar
Fra : N2000


Dato : 11-03-02 10:20


> Jeg køre en MSSQL server og har et problem når jeg skal lave en
forespørgsel
> på SmallDateTime:
>
> Hvis jeg eks køre:
>
> SELECT *
> FROM tblTurnover
> WHERE (StartDate = '12-04-01')
>
> Er der ingen problemer. Men hvis jeg prøver at forespørge på en dato der
> starter over 12-xx-xx så giver den en fejl:
>
> [Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of char data
> type to smalldatetime data type resulted in an out-of-range smalldatetime
> value.

Så tror jeg selv jeg fandt fejlen. hvis man forespørger en dato, eks dato
'31-03-01' skal man skrive '03-31-01' i forspørgelsen selv om der i
databasen står '31-03-01' kan det have noget at gøre med hvilken
sprogopsætning den stod på da tabellen blev oprettet, og sprogopsætningen
den står på nu. For den er ikke lavet på denne serer.

MVH Peter M



Jens Gyldenkærne Cla~ (24-03-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-03-02 23:32

"N2000" <naked@pc.dk> skrev:

> Så tror jeg selv jeg fandt fejlen. hvis man forespørger en
> dato, eks dato '31-03-01' skal man skrive '03-31-01' i
> forspørgelsen selv om der i databasen står '31-03-01'

Du kan ikke umiddelbart se hvad der "står" i databasen - det du ser
når du kigger på et datofelt i en tabel er en repræsentation af
datoværdien.

En måde at sikre sig mod datofejl i T-SQL er at benytte CONVERT

Når man skal vise data, f.eks. sådan:
SELECT CONVERT(VARCHAR, GETDATE(), 5) AS Dato

Og når man skal gemme en dato f.eks. sådan:
INSERT INTO Orders (OrderDate)
   VALUES (CONVERT(datetime, '31-12-02', 5))

--
Jens Gyldenkærne Clausen
MF (Medlem af Fiduso - www.fiduso.dk)

N2000 (02-04-2002)
Kommentar
Fra : N2000


Dato : 02-04-02 10:52

Hej Jens

> Når man skal vise data, f.eks. sådan:
> SELECT CONVERT(VARCHAR, GETDATE(), 5) AS Dato
>
> Og når man skal gemme en dato f.eks. sådan:
> INSERT INTO Orders (OrderDate)
> VALUES (CONVERT(datetime, '31-12-02', 5))

Tak for hjælpen. Det ser lidt pænere ud at lave det på den måde, end hvis
man skal til at lave metoder der bytter om på måned og dag

MVH Peter M



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408928
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste