Avatar billede hjbe Nybegynder
16. januar 2009 - 08:46 Der er 8 kommentarer og
1 løsning

datetime out put i Views

Hej

Jeg skal bruge en måde at få vist et dato felt på forskellige måder i en view.

dd-mm-yy hh:mm:ss eller mm-dd-yyyy hh:mm:ss (AM/PM) som
15-01-09 15:45:27 eller 01-15-2009 03:45:27 PM
Har kigget på cast og convert, men kan ikke få det til at virke.
Nogen der kan hjælpe med syntax.

DET ER PÅ FELTET dbo.EVENTS.EVENTIME

SELECT    dbo.EVENTS.SERIALNUM AS UDOSERIALNUM, dbo.EMP.SSNO AS UDOSSNO, dbo.EVENTS.EVENTIME, dbo.READER.TIMEATT AS UDODIRECTION FROM dbo.READER
INNER JOIN dbo.EVENTS ON dbo.READER.PANELID = dbo.EVENTS.MACHINE AND dbo.READER.READERID = dbo.EVENTS.DEVID
INNER JOIN dbo.EVENTYPE ON dbo.EVENTS.EVENTTYPE = dbo.EVENTYPE.EVTYPEID INNER JOIN dbo.EMP ON dbo.EVENTS.EMPID = dbo.EMP.ID
Avatar billede aaberg Nybegynder
16. januar 2009 - 09:02 #1
For at vise et datofelt på forskellige måder, skal du konvertere det til en streng (varchar). Brug Convert til dette, hvis det skal gøres i SQL.
http://msdn.microsoft.com/en-us/library/ms187928(SQL.90).aspx


Et eksempel:
select Convert(varchar, myDateTime, 105) as FormattedDateTime

Denne viser datoen i formatet dd-mm-yyyy. Se linket for flere formater.

Det skal dog siges, at hvis dette skal bruges fra en applikation eller webside, er det nok smartere at konvertere til en streng fra programmet. Hvis du f.eks. programmere i .NET, har DateTime typen meget bedre konverteringsmuligheder end du finder i SQL Serveren.
Avatar billede hjbe Nybegynder
16. januar 2009 - 09:23 #2
Det skal hældes ud i 2 forskellige txt filer i | separeret format.
En med dansk dato format og en med US dato format.
Selve eksporten gøres af en anden applikation med en scheduler.
Avatar billede janus_007 Nybegynder
16. januar 2009 - 09:37 #3
Må jeg spørge hvad du bruger til at eksportere med?
Avatar billede hjbe Nybegynder
16. januar 2009 - 10:00 #4
En applikation der hedder Dataexchange.
Man trækker simpelthen en view ind via odbc og udvælger de data man vil ha exporteret til txt filer eller en anden database.
Problemet er at dataformatet ikke kommer ud som jeg gerne sku ha dem, og man ikke kan formatere den i applikationen. Så datoen skal i princippet ændres til noget text.
Avatar billede aaberg Nybegynder
16. januar 2009 - 10:19 #5
For det danske format:

SELECT    dbo.EVENTS.SERIALNUM AS UDOSERIALNUM, dbo.EMP.SSNO AS UDOSSNO,  Convert(varchar, dbo.EVENTS.EVENTIME,120) EVENTIME, dbo.READER.TIMEATT AS UDODIRECTION FROM dbo.READER
INNER JOIN dbo.EVENTS ON dbo.READER.PANELID = dbo.EVENTS.MACHINE AND dbo.READER.READERID = dbo.EVENTS.DEVID
INNER JOIN dbo.EVENTYPE ON dbo.EVENTS.EVENTTYPE = dbo.EVENTYPE.EVTYPEID INNER JOIN dbo.EMP ON dbo.EVENTS.EMPID = dbo.EMP.ID

for US formatet:

SELECT    dbo.EVENTS.SERIALNUM AS UDOSERIALNUM, dbo.EMP.SSNO AS UDOSSNO, convert(varchar, dbo.EVENTS.EVENTIME, 110) + ' ' + convert(varchar, dbo.EVENTS.EVENTIME, 108) EVENTIME, dbo.READER.TIMEATT AS UDODIRECTION FROM dbo.READER
INNER JOIN dbo.EVENTS ON dbo.READER.PANELID = dbo.EVENTS.MACHINE AND dbo.READER.READERID = dbo.EVENTS.DEVID
INNER JOIN dbo.EVENTYPE ON dbo.EVENTS.EVENTTYPE = dbo.EVENTYPE.EVTYPEID INNER JOIN dbo.EMP ON dbo.EVENTS.EMPID = dbo.EMP.ID
Avatar billede aaberg Nybegynder
16. januar 2009 - 10:23 #6
Ovenstående US format, viser tiden med 24 timer, hvilket nok ikke er helt rigtigt. Problemet er, at SQL Serveren har ikke et standard format som tilsvare 100% det du skal bruge. Hvis det ikke er aktuelt at bruge 24 timer i klokkeslættet, kan du bruge dette i stedet for:

SELECT    dbo.EVENTS.SERIALNUM AS UDOSERIALNUM, dbo.EMP.SSNO AS UDOSSNO,  Convert(varchar, dbo.EVENTS.EVENTIME,100) EVENTIME, dbo.READER.TIMEATT AS UDODIRECTION FROM dbo.READER
INNER JOIN dbo.EVENTS ON dbo.READER.PANELID = dbo.EVENTS.MACHINE AND dbo.READER.READERID = dbo.EVENTS.DEVID
INNER JOIN dbo.EVENTYPE ON dbo.EVENTS.EVENTTYPE = dbo.EVENTYPE.EVTYPEID INNER JOIN dbo.EMP ON dbo.EVENTS.EMPID = dbo.EMP.ID

Den viser tiden som Jan 16 2009 10:23AM.
Avatar billede hjbe Nybegynder
16. januar 2009 - 11:37 #7
Det virker, tak for hjælpen.
Send lige et svar aaberg cc, så du kan få dine points.
Avatar billede aaberg Nybegynder
16. januar 2009 - 12:04 #8
svar :-)
Avatar billede arne_v Ekspert
01. februar 2009 - 20:59 #9
Hvis man er på 2005, så er en CLR UDF til at formatere og parse tider ofte en god ting.
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