Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Datum oavsett år...

Postades av 2004-03-18 08:16:59 - Tommy Stenbäck, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 730 personer

Har sökt lite i forumet, men inte hittat något (kanske sökt fel...).

Håller på att bygga en sida som ska visa historiska saker som hänt ett specifikt datum...
Dock så undrar jag hur man hämtar information från en tabell i en db (access), som har med dagens datum att göra (oavsett vilket år).

T.ex. vill jag ha ut allt från databasen som finns på XXXX-03-18.
M.a.o. oavsett om det gäller 2004-03-18 eller 1957-03-18...

Hur ska denna SQL-fråga se ut??

Tacksam för svar!
Tommy


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 11:38:31 - Mikael Sand

Jobbar du mot sql-server kan frågan t ex se ut:
select *
from tbl_History
where ( datePart( dd, HistoricDate ) = datepart (dd, GetDate() ) )
and
( datePart( mm, HistoricDate ) = datepart (mm, GetDate() ) )

HistoricDate är det fält i tabellen om innehåller ditt datum i historien.
GetDate() är en intern funktion i SQL-server och den hämtar dagens datum och tid.
Jämföreslsesatsen tittar först på dag och hämtar de som matchar dag i dagens datum och tid. Sen görs samma sak för månad.


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 11:58:45 - Tommy Stenbäck

Jag kör Access som db, och den klagade på följande:
Undefined Function 'GetDate' in expression

Bytte jag ut GetDate() mot dagens datum (provade både 2004-03-18 och #2004-03-18#), så fick jag frågor om att mata in parametervärde för dd resp. mm...

//Tommy


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 12:32:09 - Janne Hentschel

Mot Access borde detta fungera.

<code>
SELECT ... FROM ... WHERE Month(Datum) = " & SöktMånad & " AND Day(Datum) = " & SöktDag</code>
Mvh, Janne


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 13:32:47 - Tommy Stenbäck

Det fungerade perfekt!!

Supertack!
//Tommy


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 22:52:03 - Raderat konto

Finns ett alternativt sätt att gå till väga vilket följer sql standarden:
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = """" & Year(Value) & "-" & Right("0" & Month(Value), 2) & "-" & Right("0" & Day(Value), 2) & """"
Else
SQLDate = "Null"
End If
End Function

Function SQLTime(Value)
If IsDate(Value) Then
SQLTime = """" & Right("0" & Hour(Value), 2) & ":" & Right("0" & Minute(Value), 2) & ":" & Right("0" & Second(Value), 2) & """"
Else
SQLTime = "Null"
End If
End Function

Function SQLDateTime(Value)
If IsDate(Value) Then
SQLDateTime = """" & Year(Value) & "-" & Right("0" & Month(Value), 2) & "-" & Right("0" & Day(Value), 2) & " " & Right("0" & Hour(Value), 2) & ":" & Right("0" & Minute(Value), 2) & ":" & Right("0" & Second(Value), 2) & """"
Else
SQLDateTime = "Null"
End If
End Function

Dim rs
Dim con

Dim Y
Dim M
Dim D
Dim FirstDate
Dim LastDate

Dim strIn
Dim strSQL
Const strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Inetpub\db\DinDatabas"

'Instansier och öpnnar databasen
Set con = Server.CreateObject("ADODB.Connection")
con.Open strCon

'Instansierar recordset
Set rs = Server.CreateObject("ADODB.Recordset")

'Fråga som hämtar största och minsta datument
strSQL = "SELECT Min(DateField) As FirstDate, Max(DateField) As LastDate" & vbCrLf & _
"FROM TableName"

'Öpnnar recordset som retunerar en post
rs.Open strSQL, con
FirstDate = rs("FirstDate")
LastDate = rs("LastDate")
rs.Close

If IsNull(FirstDate) Or IsNull(LastDate) Then
D = Day(Date)
M = Month(Date)
For Y = Year(FirstDate) To Year(LastDate)
strIn = strIn & ", " & SQLDate(DateSerial(Y, M, D))
Next
strIn = Mid(strIn, 3)

strSQL = "SELECT *" & vbCrLf & _
"FROM TableName" & vbCrLf & _
"WHERE DateField IN (" & strIN & ")

rs.Open strSQL, con
Do Until rs.EOF
'Kod
rs.MoveNext
Loop
rs.Close
End If

con.Close
Set con = Nothing
%>
</code>

Denna metoden kanske ser lite krångigare utm. Men prestanda fördelen är mycket stor:
* Man slipper anropa en funktion för varje rad
* Ett Index på kolumnen kan mycket effektivt plocka ut Max och Min samt det poster man angivit.

Detta förutsätter att datumen lagras utan tidsangivelse.


Svara

Sv: Datum oavsett år...

Postades av 2004-03-18 22:52:31 - Andreas Hillqvist

Finns ett alternativt sätt att gå till väga vilket följer sql standarden:
<code>
<%
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = """" & Year(Value) & "-" & Right("0" & Month(Value), 2) & "-" & Right("0" & Day(Value), 2) & """"
Else
SQLDate = "Null"
End If
End Function

Dim rs
Dim con

Dim Y
Dim M
Dim D
Dim FirstDate
Dim LastDate

Dim strIn
Dim strSQL
Const strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Inetpub\db\DinDatabas"

'Instansier och öpnnar databasen
Set con = Server.CreateObject("ADODB.Connection")
con.Open strCon

'Instansierar recordset
Set rs = Server.CreateObject("ADODB.Recordset")

'Fråga som hämtar största och minsta datument
strSQL = "SELECT Min(DateField) As FirstDate, Max(DateField) As LastDate" & vbCrLf & _
"FROM TableName"

'Öpnnar recordset som retunerar en post
rs.Open strSQL, con
FirstDate = rs("FirstDate")
LastDate = rs("LastDate")
rs.Close

If IsNull(FirstDate) Or IsNull(LastDate) Then
D = Day(Date)
M = Month(Date)
For Y = Year(FirstDate) To Year(LastDate)
strIn = strIn & ", " & SQLDate(DateSerial(Y, M, D))
Next
strIn = Mid(strIn, 3)

strSQL = "SELECT *" & vbCrLf & _
"FROM TableName" & vbCrLf & _
"WHERE DateField IN (" & strIN & ")

rs.Open strSQL, con
Do Until rs.EOF
'Kod
rs.MoveNext
Loop
rs.Close
End If

con.Close
Set con = Nothing
%>
</code>

Denna metoden kanske ser lite krångigare ut. Men prestanda fördelen är mycket stor:
* Man slipper anropa en funktion för varje rad
* Ett Index på datum kolumnen kan mycket effektivt plocka ut Max och Min
* Ett Index på datum kolumnen plockar effektivt ut poster med =, >, <, IN, etc.

Detta förutsätter att datumen lagras utan tidsangivelse.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 788
27 960
271 761
5 840
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies