---
title: "Datum-hantering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/131447-datum-hantering"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "hallmert"
published: "2005-07-15T09:00:18.000Z"
updated: "2009-05-21T07:09:14.000Z"
replies: 15
views: 884
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/131447-datum-hantering"
---

# Datum-hantering

## #1 — hallmert, 2005-07-15T09:00Z

Hej på er!

Jag håller på att skriva diverse prylar och skulle behöva hjälp med en grej som jag inte riktigt ens vet hur jag ska försöka lösa.

Jag har \<%=rs("datum")%\> som utskrivet ser ut exempelvis
2005-07-15 10:32:25 - ett helt datum som skrivs in i min databas med "Now" helt enkelt!

Nu skulle jag vilja formatera det här lite när det skrivs ut, och skulle vilja ha något i den här stilen:

" Idag kl. 10:32 " \<-- OM DET ÄR IDAG.
" Fredagen den 7 juli kl. 10:32 " \<-- OM DATUMET VAR FÖR FLERA DAGAR SEN.
" Igår kl. 10:32 " \<-- OM DATUMET VAR IGÅR.

Är det svåra grejer? Vore tacksam för hjälp med det här scriptet! 
Stort tack i förväg!

Permalänk: https://www.webforum.nu/p/131447

## #2 — cyprys, 2005-07-15T09:10Z

med reservation för något syntaxfel

```
select case date(rs("datum"))
case date()
  response.write "Idag " & time(rs("datum"))
case dateadd("d",-1, date())
  response.write "Igår " & time(rs("datum"))
case else
  response.write FormatDateTime(rs("datum"),vbLongDate)
```

Permalänk: https://www.webforum.nu/p/1646117

## #3 — hallmert, 2005-07-15T09:22Z

Jag fick det inte att fungera, här är min kod:

```
	<table width="469" cellpadding="0" cellspacing="0">
	<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.RecordSet")
	
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
	SQL = "select top 1 * from blogg order by datum desc" 
	rs.Open SQL, MinCon
	
	Do While Not rs.EOF
	%>
	<tr>
	<td width="469" valign="top">
	<div class="rubrik"><%=lCase(rs("rubrik"))%>,
	
	<% select case date(rs("datum"))
	case date()
	  response.write "Idag " & time(rs("datum"))
	case dateadd("d",-1, date())
	  response.write "Igår " & time(rs("datum"))
	case else
	  response.write FormatDateTime(rs("datum"),vbLongDate) %>
	
	<%=replace(rs("text"), vbCrLf, "<br>")%>
	</td>
	</tr>	
	<tr>
	<td width="469" height="5"></td>
	</tr>
	<tr>
	<td width="469" height="1" bgcolor="#D0D0D0"></td>
	</tr>
	<tr>
	<td width="469" height="20" valign="middle" align="right">
	</td>
	</tr>
	<%
	rs.movenext
	Loop
	%>
	</table>
```

Och felmeddelande:

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A040E)
'loop' utan 'do'
/sidor/blogg/start.asp, line 39

Permalänk: https://www.webforum.nu/p/1646120

## #4 — Baltiz, 2005-07-15T16:02Z

End select har du glömt.

Permalänk: https://www.webforum.nu/p/1646247

## #5 — hallmert, 2005-07-15T16:04Z

Hjälper ändå inte. Och vad har end select med felmeddelandet att göra?

Permalänk: https://www.webforum.nu/p/1646249

## #6 — cyprys, 2005-07-15T16:31Z

Vad menar du med 'hjälper ändå inte'? Vad får du för nytt felmeddelande?

Jag glömde 'end select' vilket även gällde i din kod.

```
select case date(rs("datum"))
case date()
  response.write "Idag " & time(rs("datum"))
case dateadd("d",-1, date())
  response.write "Igår " & time(rs("datum"))
case else
  response.write FormatDateTime(rs("datum"),vbLongDate)
end select
```

Kör detta och skicka ditt nya felmeddelande, om du får något d.v.s.

Permalänk: https://www.webforum.nu/p/1646256

## #7 — hallmert, 2005-07-15T20:41Z

Det här blir nya felmeddelandet:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01C2)
Fel antal argument eller felaktig egenskapstilldelning.: 'date'
/sidor/blogg/start.asp, line 15

Permalänk: https://www.webforum.nu/p/1646295

## #8 — Baltiz, 2005-07-15T20:57Z

Tja, då är väl felet på rad 15. Kan ju inte vara så svårt att kolla upp när man har felmeddelandet i klartext på svenska.

Permalänk: https://www.webforum.nu/p/1646302

## #9 — hallmert, 2005-07-15T20:58Z

```
<% select case date(rs("datum"))
```

Där har du rad femton! Varsågod, hitta ett fel!

Permalänk: https://www.webforum.nu/p/1646304

## #10 — Baltiz, 2005-07-15T22:11Z

Date är ingen funktion som tar parameter, testa CDate istället.

Permalänk: https://www.webforum.nu/p/1646320

## #11 — cyprys, 2005-07-15T23:05Z

Ok. Tanken var mest att visa hur man kan göra då min syntax sällan är på hugget. Detta är t.o.m. testat och fungerar.

```
datum = rs("datum") 
select case cdate(FormatDateTime(datum,vbShortDate))
 case date()
  response.write "Idag " & FormatDateTime(datum, vbShortTime)
 case dateadd("d",-1, date())
  response.write "Igår " & FormatDateTime(datum, vbShortTime)
 case else
  response.write FormatDateTime(datum,vbLongDate)
end select
```

Permalänk: https://www.webforum.nu/p/1646332

## #12 — medialabs, 2009-05-19T21:09Z

Istället för att starta en till tråd så fortsätter jag här.

Har suttit och fipplat lite på en ny funktion till vår nya webbplats och har lyckats trixa fram de senaste 5 svaren från forumet. Men stött på lite "problem" nu när jag också vill skriva ut tidpunkt.

Hitta funktionen här i denna tråd som såg intressant, eftersom den skriver ut ordet Idag om svaret skrevs idag osv.. Men jag har inte klurat ut HUR jag ska få in funktionen i min Loop.  :q

```
datum = rs("datum") 
select case cdate(FormatDateTime(datum,vbShortDate))
 case date()
  response.write "Idag " & FormatDateTime(datum, vbShortTime)
 case dateadd("d",-1, date())
  response.write "Igår " & FormatDateTime(datum, vbShortTime)
 case else
  response.write FormatDateTime(datum,vbLongDate)
end select
```

Sparar datum i följande format i databasen: **20090519192344**
Datumet plockar jag fram med följande: **& RSForum_REPLY("T_LAST_POST") &** vilket inte blir så snyggt.. 

```
				SQLForum_REPLY = "SELECT * FROM forum_topics order by T_LAST_POST_REPLY_ID DESC LIMIT 0,5"

			set RSForum_REPLY = ConnectForum_REPLY.Execute (SQLForum_REPLY)

				do while not RSForum_REPLY.eof

    					Response.write "<img src=""http://www.medialabs.se/images/pil_nyheter.gif"" width=""9"" height=""10"" border=""0"" alt=""""> <a href=""http://www.posthistoria.nu/forum/topic.asp?TOPIC_ID=" & RSForum_REPLY("TOPIC_ID") & """ target=""_blank"">" & RSForum_REPLY("T_SUBJECT") & "</i></a> " [B]& RSForum_REPLY("T_LAST_POST") &[/B]"<br>"

    				RSForum_REPLY.MoveNext
				Loop
```

Permalänk: https://www.webforum.nu/p/2185286

## #13 — voigtann1, 2009-05-20T04:38Z

Kan kanske använda: <http://www.webforum.nu/showthread.php?t=43454> ?

Eller om du vill använda dig av koden ovan, lägg det i en funktion:

```
Function DisplayDate(datum) 
	select case cdate(FormatDateTime(datum,vbShortDate))
		case date()
			DisplayDate =  "Idag " & FormatDateTime(datum, vbShortTime)
		case dateadd("d",-1, date())
			DisplayDate =  "Igår " & FormatDateTime(datum, vbShortTime)
		case else
			DisplayDate =  FormatDateTime(datum,vbLongDate)
	end select
End Function
```

Och anropar den med **DisplayDate(**RSForum_REPLY("T_LAST_POST")**)**

Permalänk: https://www.webforum.nu/p/2185294

## #14 — Biasse, 2009-05-20T08:50Z

Ska väl fungera att lägga in detta i loopen?

```
  idag = date()
  igar = DateAdd("d",-1,date())
  datum = cdate(Left(rs("datum"),10))

  If datum = idag Then				
    Response.write "Idag"
  ElseIf datum = igar  Then  
    Response.write "Igår"
  Else
    Response.write cdate(Left(rs("datum"),10))
  End If
```

Permalänk: https://www.webforum.nu/p/2185317

## #15 — medialabs, 2009-05-20T16:43Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1468355)**
>
> Kan kanske använda: <http://www.webforum.nu/showthread.php?t=43454> ?
> 
> Eller om du vill använda dig av koden ovan, lägg det i en funktion:
>
>
> ```
> Function DisplayDate(datum) 
> 	select case cdate(FormatDateTime(datum,vbShortDate))
> 		case date()
> 			DisplayDate =  "Idag " & FormatDateTime(datum, vbShortTime)
> 		case dateadd("d",-1, date())
> 			DisplayDate =  "Igår " & FormatDateTime(datum, vbShortTime)
> 		case else
> 			DisplayDate =  FormatDateTime(datum,vbLongDate)
> 	end select
> End Function
> ```
>
> 
> Och anropar den med **DisplayDate(**RSForum_REPLY("T_LAST_POST")**)**

Jag testade din funktion och fick 

Jag använder MySQL och T_LAST_POST är i definerat som VarChar(14). Kan det ha att göra med det då jag får följande fel: **Invalid procedure call or argument: 'FormatDateTime'** och den pekar på raden: 	**select case cdate(FormatDateTime(datum,vbShortDate))**

Jag tolkar det som att den inte gillar att den är formaterad som VarChar eller är jag fel ute?

Permalänk: https://www.webforum.nu/p/2185371

## #16 — voigtann1, 2009-05-21T07:09Z

Tyvärr har du en extremt dålig databas design om du har ställt in att ett datum är en sträng, men du kan testa Biasses kod för att formatera strängen till ett datum innan du slänger in det i funktionen:

```
datum = cdate(Left(rs("datum"),10))
```

Permalänk: https://www.webforum.nu/p/2185428

---

Tråden på webben: https://www.webforum.nu/amne/asp/131447-datum-hantering
