18. december 2006 - 21:55
Der er
10 kommentarer og 1 løsning
Formatering af dato
Hej eksperter, Jeg har et felt i en sql2k db.. Feltet er af typen varchar(25) og kan indeholde følg. dato med plinger omkring: '30-11-2006 14:01:45' Jeg har en anden kolonne af typen datetime og ønsker at lave en update således at datoen bliver konventeret til det nye felt. Har prøvet diverse CONVERT funktioner, men ikke lige noget der har virket.. SUBSTRING(TempDato, 2, 19) <- dette piller datoen ud, men det er jo stadig tekst... Hilsen Claus
Annonceindlæg fra SoftwareOne
19. december 2006 - 01:33
#1
har du proevet UPDATE tabelnavn SET datetimefelt = CAST(varcharfelt AS DATETIME) ? hvis nej - saa proev den hvis ja - saa lave noget streng manipulation inden du caster
19. december 2006 - 08:31
#2
CAST(SUBSTRING(TempDato, 2, 19) AS DATETIME) Ovenstående giver mig: The conversion of a char type is a datetime data type resulted in an out-of-range datetime.. Andre forslag?
19. december 2006 - 08:54
#3
Mon ikke du skal have converteret til uk datetime format? Jeg bruger ikke mssql så meget men mon ikke du kan opbygge via year(), month() osv eller måske noget datepart ala set timestamp = year(tempdato) & ' ' & month(tempdato) osv... /Bagge
19. december 2006 - 09:27
#4
Nu har jeg følg.: SELECT *, CAST(CONVERT(DATETIME, SUBSTRING(TempDato, 8, 4) + '-' + SUBSTRING(TempDato, 5, 2) + '-' + SUBSTRING(TempDato, 2, 2) + ' ' + SUBSTRING(TempDato, 13, 8), 102) AS DATETIME) AS TestDato Dette virker også fint nok - hvis jeg sætter IsDate() om den, er resultatet 1 ud for alle datoer. Hvis jeg prøver at sætte det ind i et dato felt får jeg følg. fejl: Syntax error converting datetime from charter string
19. december 2006 - 09:36
#5
Måske du skal starte med at checke i hvilket format datetime skal indsættes. Dernæst forsøge med noget i stil med ovenstående, blot tilrettet til det præcise format. Hvis det er en onetime konvertering kan du måkse 'snyde lidt' og lave en select, loope igennem alle records og for hver record opbygge og update datetime i det format der skal bruges? /Bagge
19. december 2006 - 09:42
#6
Hvordan kan jeg se i hvilket format datetime skal indsættes? Jeg skal bruge det til en DTS pakke der skal importere data fra en CSV fil flere gange i døgnet.
19. december 2006 - 09:46
#7
Kan du ikke lave en test update/insert i database fra asp/php eller hvad du nu bruger? Hvis du har et db tool hvor du kigger direkte i basen, kan du via dette kigge i et timestamp felt og se formatet
19. december 2006 - 10:02
#8
Jeg bruger SQL Server Enterprise Manager.. Jo, må lige have et asp script.
19. december 2006 - 10:05
#9
I enterprise manager kan du bare kigge på et datetime felt, så kan du se formatet der
18. september 2007 - 15:57
#10
Lukkes... mbagge > Vil du have nogle points eller skal jeg bare lukke det?
18. september 2007 - 16:14
#11
nej behold du bare dem :) /Bagge
Computerworld tilbyder specialiserede kurser i database-management