Avatar billede puppet Nybegynder
19. juni 2002 - 16:55 Der er 6 kommentarer og
1 løsning

Access Dato/tid - ASP - Date()

Jeg har et Dato/tid felt i en access db som jeg gerne vil vise på min html-side.

Jeg bruger javascript kode i ASP.

Problemet er at når jeg kigger på en record i Access DBen så står der som tid eks. 15:27:01, men når jeg henter indholdet af databasen ud i et recordset i ASP og derfra over i et Date() object, for til sidst at skrive den ud. Så sker det mystiske at tiden viser 15:27:00 ....

Jeg har prøvet at hive millisekunder ud af objectet også ... det viser 999.

Det mest mærkelige er at det ikke er i alle tilfælde at dette sker ... andre records fra samme tabel giver samme sekund tal både i DBen og ude i ASPen, og i disse tilfælde er antal millisekunder 0.

Nogen der har prøvet noget lignende eller som måske kan fortælle mig hvorfor ... det er jo ikke svært at teste antal millisekunder også bare runde af, men jeg vil gerne vide hvad der sker og hvorfor.
Avatar billede fiskerendk Nybegynder
19. juni 2002 - 16:57 #1
hvordan har du sat dato og tid i DB'en som når tingene er posted i.. altså Posted den 19.06.02 blablablabla el hvad?
Avatar billede medions Nybegynder
19. juni 2002 - 16:58 #2
Brug denne funktion:

dteDate = "5/10/2001" ' 5th October, 2001
dteDate = FormatDate(dteDate, "%Y/%m/%d") ' dteDate = "2001/10/05"

strSQL = "INSERT INTO table1 (field1) VALUES (#" & dteDate & "#)"

//>Rune
Avatar billede kimiwan Nybegynder
19. juni 2002 - 18:32 #3
for at få den til at fungere, skal du bruge funktionen her:

http://www.adopenstatic.com/resources/code/formatdate.asp
Avatar billede kimiwan Nybegynder
19. juni 2002 - 18:32 #4
(altså for at få medions' til at fungere)
Avatar billede medions Nybegynder
19. juni 2002 - 18:33 #5
<%
Function FormatDate( _
  byVal strDate, _
  byRef strFormat _
  )

  ' Accepts strDate as a valid date/time,
  ' strFormat as the output template.
  ' The function finds each item in the
  ' template and replaces it with the
  ' relevant information extracted from strDate.
  ' You are free to use this code provided the following line remains
  ' www.adopenstatic.com/resources/code/formatdate.asp

  ' Template items
  ' %m Month as a decimal no. 2
  ' %M Month as a padded decimal no. 02
  ' %B Full month name February
  ' %b Abbreviated month name Feb 
  ' %d Day of the month 23
  ' %O Ordinal of day of month (eg st or rd or nd)
  ' %j Day of the year 54
  ' %Y Year with century 1998
  ' %y Year without century 98
  ' %w Weekday as integer (0 is Sunday)
  ' %a Abbreviated day name Fri
  ' %A Weekday Name Friday
  ' %H Hour in 24 hour format 24
  ' %h Hour in 12 hour format 12
  ' %N Minute as an integer 01
  ' %n Minute as optional if minute <> 00
  ' %S Second as an integer 55
  ' %P AM/PM Indicator PM

  On Error Resume Next

  Dim intPosItem
  Dim int12HourPart
  Dim str24HourPart
  Dim strMinutePart
  Dim strSecondPart
  Dim strAMPM

  ' Insert Month Numbers
  strFormat = Replace(strFormat, "%m", DatePart("m", strDate), 1, -1, vbBinaryCompare)

  ' Insert Padded Month Numbers
  strFormat = Replace(strFormat, "%M", Right("0" & DatePart("m", strDate), 2), 1, -1, vbBinaryCompare)

  ' Insert non-Abbreviated Month Names
  strFormat = Replace(strFormat, "%B", MonthName(DatePart("m", strDate), False), 1, -1, vbBinaryCompare)

  ' Insert Abbreviated Month Names
  strFormat = Replace(strFormat, "%b", MonthName(DatePart("m", strDate), True), 1, -1, vbBinaryCompare)

  ' Insert Day Of Month
  strFormat = Replace(strFormat, "%d", DatePart("d",strDate), 1, -1, vbBinaryCompare)

  ' Insert Day of Month Ordinal (eg st, th, or rd)
  strFormat = Replace(strFormat, "%O", GetDayOrdinal(Day(strDate)), 1, -1, vbBinaryCompare)

  ' Insert Day of Year
  strFormat = Replace(strFormat, "%j", DatePart("y",strDate), 1, -1, vbBinaryCompare)

  ' Insert Long Year (4 digit)
  strFormat = Replace(strFormat, "%Y", DatePart("yyyy",strDate), 1, -1, vbBinaryCompare)

  ' Insert Short Year (2 digit)
  strFormat = Replace(strFormat, "%y", Right(DatePart("yyyy",strDate),2), 1, -1, vbBinaryCompare)

  ' Insert Weekday as Integer (eg 0 = Sunday)
  strFormat = Replace(strFormat, "%w", DatePart("w",strDate,1), 1, -1, vbBinaryCompare)

  ' Insert Abbreviated Weekday Name (eg Sun)
  strFormat = Replace(strFormat, "%a", WeekDayName(DatePart("w",strDate,1), True), 1, -1, vbBinaryCompare)

  ' Insert non-Abbreviated Weekday Name
  strFormat = Replace(strFormat, "%A", WeekDayName(DatePart("w",strDate,1), False), 1, -1, vbBinaryCompare)

  ' Insert Hour in 24hr format
  str24HourPart = DatePart("h",strDate)
  If Len(str24HourPart) < 2 then str24HourPart = "0" & str24HourPart
  strFormat = Replace(strFormat, "%H", str24HourPart, 1, -1, vbBinaryCompare)

  ' Insert Hour in 12hr format
  int12HourPart = DatePart("h",strDate) Mod 12
  If int12HourPart = 0 then int12HourPart = 12
  strFormat = Replace(strFormat, "%h", int12HourPart, 1, -1, vbBinaryCompare)

  ' Insert Minutes
  strMinutePart = DatePart("n",strDate)
  If Len(strMinutePart) < 2 then strMinutePart = "0" & strMinutePart
  strFormat = Replace(strFormat, "%N", strMinutePart, 1, -1, vbBinaryCompare)

  ' Insert Optional Minutes
  If CInt(strMinutePart) = 0 then
      strFormat = Replace(strFormat, "%n", "", 1, -1, vbBinaryCompare)
  Else
      If CInt(strMinutePart) < 10 then strMinutePart = "0" & strMinutePart
      strMinutePart = ":" & strMinutePart
      strFormat = Replace(strFormat, "%n", strMinutePart, 1, -1, vbBinaryCompare)
  End If

  ' Insert Seconds
  strSecondPart = DatePart("s",strDate)
  If Len(strSecondPart) < 2 then strSecondPart = "0" & strSecondPart
  strFormat = Replace(strFormat, "%S", strSecondPart, 1, -1, vbBinaryCompare)

  ' Insert AM/PM indicator
  If DatePart("h",strDate) >= 12 then
      strAMPM = "PM"
  Else
      strAMPM = "AM"
  End If

  strFormat = Replace(strFormat, "%P", strAMPM, 1, -1, vbBinaryCompare)

  FormatDate = strFormat

End Function



Function GetDayOrdinal( _
  byVal intDay _
  )

  ' Accepts a day of the month
  ' as an integer and returns the
  ' appropriate suffix
  On Error Resume Next

  Dim strOrd

  Select Case intDay
  Case 1, 21, 31
      strOrd = "st"
  Case 2, 22
      strOrd = "nd"
  Case 3, 23
      strOrd = "rd"
  Case Else
      strOrd = "th"
  End Select

  GetDayOrdinal = strOrd

End Function

dteDate = "5/10/2001" ' 5th October, 2001
dteDate = FormatDate(dteDate, "%Y/%m/%d") ' dteDate = "2001/10/05"

strSQL = "INSERT INTO table1 (field1) VALUES (#" & dteDate & "#)"
%>

Sådan var det vidst.. ;-)

-Og lige tak til Kimiwan! :-D
//>Rune
Avatar billede tmceu Praktikant
20. juni 2002 - 04:49 #6
Undskyld, men hvilken del af "Jeg bruger javascript kode i ASP" forstod I ikke :-)

Præcissionen for Date objektet i JavaScript er ét milisekund, så du behøver ikke lede efter fejlen der :-)

Det er derimod almindelig kendt, at Access håndterer date/time lidt specielt. Dette har generet mange, der eks. skal anvende data fra Access på SQL Server. Problemet er, at Access (og/eller driveren) afrunder tiden til nærmeste sekund. Reglerne for denne afrunding virker desuden ikke altid logiske.

En udbredt work-around er, at lave et manuelt udtræk af værdierne vha. hour, minute og second funktionerne i dit SQL kald og derefer eksplicit sætte disse værdier på dit Date objekt via set-funktionerne.
Avatar billede puppet Nybegynder
20. juni 2002 - 08:55 #7
tmceu fik points ...

Grunden er at jeg ikke har problemer med indsætning af date i access, men at problemet opstår når jeg trækker data ud og vil vise dem.

Men tak for deltagelsen allesammen.
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
Kurser inden for grundlæggende programmering

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