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


Jämföra datum

Postades av 2007-05-14 23:35:33 - Thomas Roman, i forum access, Tråden har 21 Kommentarer och lästs av 2271 personer

Jag försöker plocka ur alla rader från en tabell där datumet och tiden nu är detsamma som Tabell1.Fält (date) + Tabell2.Fält (int). Det är egentligen en enkel sak att göra men problemet är att jag inte får fram något om jag kollar med =.
Jag måste antingen göra om både tiden nu och databas-datumet till strängar och jämföra dom eller så kollar jag tiden nu > databas-datum -1 sek och tiden nu < datbas-datum +1 sek.

Jag nämnde det här i en annan tråd (som jag inte hittar nu) och då fick jag till svar att det beror på att datumet i en databas sparas som flyttal och kanske inte är helt exakta.

Jag hade nöjt mig med dom 2 lösningar jag har kommit fram till, men dom tar väldigt mycket längre tid att utföra än om jag bara använder =.

Finns det någon bra lösning?


Thomas


Svara

Sv: Jämföra datum

Postades av 2007-05-15 00:16:05 - Andreas Hillqvist

Du kan spara tid som heltal i form av sekunder.


Svara

Sv:Jämföra datum

Postades av 2007-05-15 15:29:57 - Thomas Roman

Det fungerade mycket bättre! Tackar!


Thomas


Svara

Sv: Jämföra datum

Postades av 2007-07-06 15:26:20 - Thomas Vanhaniemi

Personligen tycker jag att det är en dum lösning att spara tiden som sekunder från ett visst datum. Vad har fältet (int) för betydelse för det första? Är det sekunder, minuter, timmar, dagar, månader eller år?
Du borde med DATEADD funktionen, om den nu finns i Access (vilket jag tror), lägga till på datumfältet antalet enheter angivet i int fältet.


Svara

Sv:Jämföra datum

Postades av 2007-07-06 19:06:10 - Thomas Roman

Grundproblemet ligger i att jämföra ett datum med ett annat datum och i en annan tråd så skrev Andreas att det beror på datum sparas som decimaltal och att dom tydligen inte blir helt exakta då. Därför går det tex bra om man gör om datumet till en sträng och jämför, då blir det alltid lika.
Vill man fortfarande ha bra prestanda så går det perfekt att ha datumet som ett heltal med antalet sekunder från ett annat datum.


Thomas


Svara

Sv: Jämföra datum

Postades av 2007-07-06 19:21:50 - Thomas Vanhaniemi

Jag har då aldrig haft problem med att jämföra datum. Hur jämför du egentligen?
Tror det som skulle kunna ställa till problem var om Access även lagrar millisekunder. Då kommer en = jämförelse att ge fel resultat (oftast).


Svara

Sv:Jämföra datum

Postades av 2007-07-06 19:33:01 - Thomas Roman

Jag jämför Tabell.Datumfält = #2007-04-24 13:45#, dvs enbart på minutnivå. Datumen som läggs in är också bara på minutnivå.

Hur ställer man in vilken noggranhet som Access ska spara datumen i?


Thomas


Svara

Sv: Jämföra datum

Postades av 2007-07-06 19:45:45 - Thomas Vanhaniemi

Vet inte, men om du lägger in datum på minutnivå och är säker på att de är det så tycker jag inte jämförelsen borde vara något problem. Du kan ju förstås jämföra två datum med DATEDIFF funktionen på någon lämplig nivå, fast sekunder, och ta med de rader där resultatet blir 0.

Då har du kvar möjligheten att utföra alla datumfunktioner på datumet om du behöver.


Svara

Sv: Jämföra datum

Postades av 2007-07-07 11:47:39 - Andreas Hillqvist

Om du skal jämföra på minut nivå skriver du så här:

Tabell.Datumfält >= #2007-04-24 13:45# AND Tabell.Datumfält < #2007-04-24 13:46#


Svara

Sv:Jämföra datum

Postades av 2007-07-08 14:14:13 - Thomas Roman

Datumen jag lägger in är på minutnivå så jag tycker också att det som sparas i databasen (oavsett hur det sparas) borde vara en exakt tid. Men tydligen inte. DateDiff() skulle kunna vara lösningen, jag återkommer med resultat.


Thomas


Svara

Sv: Jämföra datum

Postades av 2007-07-08 16:50:10 - Andreas Hillqvist

Datediff är dåligt ur prestanda synpunkt. Då du inte kan utnyttja index ochk måste göra minst ett funktionsanrop per post.


Svara

Sv:Jämföra datum

Postades av 2007-07-08 16:58:45 - Thomas Roman

Ok. Lösningar på problemet har jag haft redan tidigare, det var just prestandan som var dålig.
Ditt förslag med att jämföra med >= och < har jag inte provat, men som jag skrev i det första inlägget så har jag testat en liknande kod och också där var prestandan ett problem.



Thomas


Svara

Sv: Jämföra datum

Postades av 2007-07-08 17:05:18 - Thomas Vanhaniemi

Om du vill ha prestanda ska du inte använda Access ;)


Svara

Sv: Jämföra datum

Postades av 2007-07-08 17:20:41 - Andreas Hillqvist

I första inlägget gör du operationen på databas värdet. Inte på det konstanta värdet.
Så i ditt första exempel kan du inte utnytja index.


Svara

Sv:Jämföra datum

Postades av 2008-01-05 01:46:08 - Thomas Roman

Jag tänkte ta tag i mitt gamla problem och få det löst nu. Men hur lägger jag till Tabell2.Fält (int) till Tabell1.Fält (date) på bästa sätt?
<code>
DateAdd('s', Tabell2.Intfält, Tabell1.Datumfält) >= #2007-04-24 13:45# AND DateAdd('s', Tabell2.Intfält, Tabell1.Datumfält) < #2007-04-24 13:46#
</code>
Det kommer väl att bli ganska segt?


/Thomas


Svara

Sv: Jämföra datum

Postades av 2008-01-08 18:47:44 - Thomas Roman

Den här koden använder jag nu och den tar för lång tid (klart längre tid än när jag körde med datumet som ett heltal med antalet sekunder):
<code>
...WHERE Tabell1.Fält < DATEADD('s', Tabell2.Fält +1, #" & System.DateTime.Now.ToString("g") & ":00#) AND Tabell1.Fält > DATEADD('s', Tabell2.Fält -1, #" & System.DateTime.Now.ToString("g") & ":00#)
</code>

Går det att förbättra?


/Thomas


Svara

Sv:Jämföra datum

Postades av 2008-01-09 08:41:10 - Jan Bulér

Eftersom du verkar använda Access kan du ju prova om Between funktionen gör någon skillnad.

...WHERE Tabell1.Fält Between dinStartid AND dinStopptid


Svara

Sv: Jämföra datum

Postades av 2008-01-14 19:52:10 - Thomas Roman

Nej, ingen direkt skillnad. Fler tips? Processorn går på typ 80% i 30 sek när jag kör koden så här. Tidigare när jag använda mig av Antal-sekunder-från-ett-visst-datum istället för ett datumfält så märkte man inte ens av när koden kördes.


/Thomas


Svara

Sv: Jämföra datum

Postades av 2008-04-03 13:49:28 - Thomas Roman

Jag testade att gå tillbaka till datumfält och att helt enkelt kolla med = och det fungerade bra. Trodde jag. Nu har jag fått höra från diverse användare att det inte fungerar så det går inte.

Eftersom det fungerar bra att tex jämföra datumen som strängar så tänkte jag att man kunde hämta ut alla fält som är typ 5 min före och 5 min efter tiden nu, sen kollar man bara av dom som strängar. Det borde inte ta lika lång tid som att kolla av alla fält som strängar.

Är det möjligt att göra så?


/Thomas


Svara

Sv:Jämföra datum

Postades av 2008-05-06 20:00:55 - Andreas Hillqvist

Jag har ett förslag:
* Låt datumkolumnen i Tabell1, kallat Fält i ditt exempel, vara datumtyp.
* Lägg till ett index på kolumnen
* Ändra intervallkolumnen i Tabell2, oxå kallat Fält i ditt exempel, till datumtyp
* Värden matas in som = S / 24 / 60 /60 = S / 86400 (Det går 86400 sekunder på ett dygn)
* SQL frågan utformar du så här:

 WHERE Tabell1.Fält < (? + Tabell2.Fält) AND Tabell1.Fält > (? + Tabell2.Fält)

* När du exekverar frågan skickar du med två parametrar
* Den första är Now - 1s
* Den andra är Now + 1s

JAg tror problemet att frågan nu måste exekvera funkionsanropet för varje rad. Funktionsanrop på radnivå är långsamt i Access.


Svara

Sv: Jämföra datum

Postades av 2008-05-29 08:05:49 - Åsa Furubom

Jag brukar föredra att inte ha klockslag lagrat i samma fält som datumet just för att det blir mycket krångligare att jämföra datum. Om du har datum och klockslag i två separata fält så kan du ju jämföra det som strängvärden istället för att behöva slå ihop och krångla.


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 768
27 960
271 761
416
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