21. august 2008 - 08:36
Der er
9 kommentarer og 1 løsning
Konvertere datoer
Hej Hvordan konverterer jeg en dato til en streng i dette format: MM/dd/yyyy HH:mm:ss Z ? Denne select convert(varchar,getdate(),109) f.eks.: aug 21 2008 8:33:49:190AM og jeg vil gerne have aug bytte ud med 08 :-)
Annonceindlæg fra DE-CIX
21. august 2008 - 15:17
#2
Hvorfor ikke hente datoen og saa lave formateringen i din applikation ?
21. august 2008 - 15:50
#3
Jeg slq'er op i mod et eksternt system som kræver datoen i et helt bestemt format. Jeg har sådan set ingen applikation til det, men sender sql queries afsted.
21. august 2008 - 16:57
#4
Du kan lave en user defined function til det: CREATE FUNCTION DateConverter (@date datetime) RETURNS varchar(21) AS BEGIN DECLARE @return varchar(21) SET @return = RIGHT('0' + CONVERT(varchar(2), DATEPART(mm, @date)), 2) + '/' + RIGHT('0' + CONVERT(varchar(2), DATEPART(dd, @date)), 2) + '/' + CONVERT(varchar(4), DATEPART(yyyy, @date)) + ' ' + RIGHT('0' + CONVERT(varchar(2), DATEPART(hh, @date)), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), DATEPART(n, @date)), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), DATEPART(ss, @date)), 2) + ' Z' RETURN @return END Kaldes med f.eks. SELECT dbo.DateConverter(datecolumn) FROM tblTablename
24. august 2008 - 03:09
#5
Det er et af de tilfælde hvor jeg mener at en CLR UDF er langt bedre. (forudsætter naturligvis at man er på 2005 eller 2008)
24. august 2008 - 03:10
#6
using System; using System.Data.Sql; using System.Data.SqlTypes; using System.Data.SqlClient; using Microsoft.SqlServer.Server; namespace E { public class DateTimeUtil { [SqlFunction] public static SqlString DateTimeFormat(DateTime dt, string fmt) { return dt.ToString(fmt); } } }
24. august 2008 - 03:10
#7
1> SELECT DBO.DATETIMEFORMAT(GETDATE(), 'MM/dd/yy HH:mm') 2> GO -------------------------------------------------- 08-23-08 21:08 (1 row affected) 1> SELECT DBO.DATETIMEFORMAT(GETDATE(), 'dd-MMM-yyyy HH:mm') 2> GO -------------------------------------------------- 23-aug-2008 21:08 (1 row affected) 1> SELECT DBO.DATETIMEFORMAT(GETDATE(), 'MM/dd/yyyy HH:mm:ss zzz') 2> GO -------------------------------------------------- 08-23-2008 21:08:24 -04:00 (1 row affected)
25. oktober 2008 - 23:16
#8
hulla ?
04. november 2008 - 20:23
#9
Hej arne du ledte mig på sporet, så du får pointene,..
04. november 2008 - 20:38
#10
OK men ldanielsens løsning virker vel også
Computerworld tilbyder specialiserede kurser i database-management