Avatar billede hulla Novice
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

:-)
Avatar billede hrc Mester
21. august 2008 - 09:02 #1
Se lidt i dette link: http://msdn.microsoft.com/en-us/library/ms187928(SQL.90).aspx

Kan ikke se en der konverterer til det du gerne vil have, men måske kan en af de andre muligheder bruges. Style 113 eller 126?
Avatar billede arne_v Ekspert
21. august 2008 - 15:17 #2
Hvorfor ikke hente datoen og saa lave formateringen i din applikation ?
Avatar billede hulla Novice
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.
Avatar billede ldanielsen Nybegynder
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
Avatar billede arne_v Ekspert
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)
Avatar billede arne_v Ekspert
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);
        }
    }
}
Avatar billede arne_v Ekspert
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)
Avatar billede arne_v Ekspert
25. oktober 2008 - 23:16 #8
hulla ?
Avatar billede hulla Novice
04. november 2008 - 20:23 #9
Hej arne

du ledte mig på sporet, så du får pointene,..
Avatar billede arne_v Ekspert
04. november 2008 - 20:38 #10
OK

men ldanielsens løsning virker vel også
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Generalist til PMO

Politiets Efterretningstjeneste

Bliv AD-specialist hos PET

Udviklings- og Forenklingsstyrelsen

Tech Lead til Java-backend udviklingsteam