Avatar billede a-torsten Nybegynder
29. september 2005 - 11:56 Der er 10 kommentarer og
1 løsning

Fra Varchar til Datetime

Hej...

Har en del dato´er som er gemt i varchar felter...

Dem vil jeg meget gerne filtrere på, så er nødt til at konverterer dem til datetime felter i sql´en.....

Noget ala

Where Cast(MitFelt,datetime) > getDate()

Men det virker ikke....

Får følgende fejl:

ODBC Error Code = 22008 (Datetime field overflow)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.

Nogen ideer..?
Avatar billede lorentsnv Nybegynder
29. september 2005 - 11:59 #1
SQL Serveren kan ikke finde ud af den syntax du har på dit datoformat. Kan du give et eksempel på en datostring?
Avatar billede a-torsten Nybegynder
29. september 2005 - 11:59 #2
2005/09/15 fx
Avatar billede ldanielsen Nybegynder
29. september 2005 - 12:03 #3
Brug CONVERT i stedet:

CONVERT(datetime, MitFelt, 111)
Avatar billede ldanielsen Nybegynder
29. september 2005 - 12:04 #4
111 er japansk datoformat, og det er det der ligner dit format mest

Søg på CAST and CONVERT i Books Online, så er der en masse formater der kan bruges
Avatar billede a-torsten Nybegynder
29. september 2005 - 12:05 #5
Stadig samme

ODBC Error Code = 22008 (Datetime field overflow)

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.
Avatar billede a-torsten Nybegynder
29. september 2005 - 12:06 #6
Kan det være fordi der også er tomme felter som den så ikke kan omforme..?

/Anders
Avatar billede lorentsnv Nybegynder
29. september 2005 - 13:10 #7
Er alle datoer i samme format?

Jeg mener at Convert sammen med style (tallet 111) bruges til at konvertere et datofelt til et tekstfelt i et bestemt format, og ikke modsat.

Kan du eventuelt bruge substring til at konvertere teksten til et datoformat?
Avatar billede lorentsnv Nybegynder
29. september 2005 - 13:13 #8
Hva med cast(replace(MitFelt,'/','-') as datetime) ?
Dit datoformat burde kunne genkendes hvis du har det i formatet 2005-09-15 i stedet for 2005/09/15.
Avatar billede ldanielsen Nybegynder
29. september 2005 - 14:02 #9
kan vi være enige om at

SELECT CONVERT(datetime, '2005/05/08', 111)

giver den korrekte dato?

Jeg tror du har nogle ikke-velformede datoer inde.
Avatar billede a-torsten Nybegynder
21. november 2005 - 10:05 #10
Kan ikke huske hvad jeg sku bruge det til, og om jeg fik det løst med jeres svar...

Men kast et svar, så får i point...
Avatar billede ldanielsen Nybegynder
21. november 2005 - 13:01 #11
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester