Avatar billede vante Nybegynder
23. marts 2010 - 22:36 Der er 9 kommentarer

Hjælp til dato formatering

Mit problem er at, i min database står selve datoen i en kolonne for sig selv som et unix timestamp, gemt som integer. I en anden kolonne står tiden på dagen som en normal integer som  f.eks. 1800 eller 1845. Dette vil jeg gerne have sat sammen til et rigtig timestamp  f.eks. 22-03-2010 18:45. Er det muligt at gøre det i Access. Hvis ikke kan man så gøre det i ASP.NET c#??

Pft
Vante
Avatar billede kabbak Professor
23. marts 2010 - 23:47 #1
Dato:([date]/86400)+#1/1/1970#
Avatar billede kabbak Professor
23. marts 2010 - 23:48 #2
er tiden altid på 4 cifre ?
Avatar billede Slettet bruger
24. marts 2010 - 11:45 #3
I ms-access er timestamp et kommatal, hvor heltalsdelen er en dagstæller lige som unix time.
Hvor unixtime har  valgt 1. jan 1970 som nulpunkt (http://en.wikipedia.org/wiki/Unix_time), anvender ms-access:
?format(0,"dd\/mm-yyyy hh:nn")
30/12-1899 00:00

Brøkdelen er - ja - delen af dagen

?format(0.75,"dd\/mm-yyyy hh:nn")
30/12-1899 18:00
Avatar billede vante Nybegynder
24. marts 2010 - 23:03 #4
Hmm min udfordring er at hvis jeg bare adder tidspunktet 18:45 til datoen 25-03-2010 får jeg ikke 25-03-2010 kl 18:45, som jeg gerne vil have. Nogle inputs til hvordan jeg kan gøre få det?
Avatar billede Slettet bruger
25. marts 2010 - 01:29 #5
jo 18:45 som brøkdel af en dag: (18*60+45)/24/60

Så vidt jeg forstår af #1 har du et heltal - f.eks 1845.  lad os kalde feltet tidsp

brøkdelen er da:
(tidsp-40*int(tidsp/100))/1440
Avatar billede vante Nybegynder
26. marts 2010 - 23:55 #6
Hmm ellebe jeg må indrømme at jeg ikke helt forstå hvad du mener.

Jeg prøver lige at beskrive mit problem igen:

1. I en kollonen "Dato" står der f.eks. 1269471600
2. I en tredje kollone "sluttid" står der f.eks 1845

Begge tidspunkterne er altid på 4 cifre.

Hvis jeg laver følgende på Dato kollonen får jeg den til et normal Datestamp:

Format(([Dato]+2209170200)/86400,"dd-mm-yyyy")

Mit ønske er så at sætte 1845 ind som tidspunkt på den dato, så timestampet 26-03-2010 18:45
Avatar billede kabbak Professor
27. marts 2010 - 00:12 #7
Dato = 1269471600
Sluttid = 1845
DatoTid = (Int(Dato / 86400) + #1/1/1970#) + (Sluttid - 40 * Int(Sluttid / 100)) / 1440
Avatar billede Slettet bruger
27. marts 2010 - 10:45 #8
Ser jeg vrøvlede i #3 - unixtime er en sekund tæller!

Du skal bare indsætte som decimal tal.

hvis man har et heltal : 14692
og en brøkdel:  1125/1440

Og begge repræsenterer noget der kan lægges samme, som f.eks et tidspunkt og en tidsperiode, så anvender man regningsarten addition. Resultat er repræsenteret som et decimaltal (float eller double) i ms-access og  vba (og de fleste andre computertal formater)

Man kan sige at et ms-access Timestamp har et decimaltal inde i sig.
Avatar billede DoRee Nybegynder
11. april 2010 - 16:37 #9
Hvis jeg forstår dig ret, er dato heltallet i samme format som access bruger, og du vil blot have det vist som et...

Du kunne lave en lille VBA funktion der gør det:

Public Function MyDateTimeStamp(MyDate As Long, MyTime As Long) As Date
Dim TimeStr As Variant
Dim DateStr As Variant

TimeStr = Right("0000" & MyTime, 4)
TimeStr = Mid(TimeStr, 1, 2) & ":" & Mid(TimeStr, 3, 2) & ":00"
DateStr = CStr(CDate(MyDate))
MyDateTimeStamp = CDate(DateStr & " " & TimeStr)

End Function


Eller som et udtryk:

CDate(CStr(CDate([dato])) & " " & Mid(Right("0000" & [tid];4);1;2) & ":" & Mid(Right("0000" & [tid];4);3;2) & ":00")
Hvor [dato] er datofeltet og [tid] er tidsfeltet
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

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