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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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