webForumDet fria alternativet

Jämföra datum

ASPur ASP

23 svar · 401 visningar · startad av justine

justineMedlem sedan maj 200167 inlägg
#1

Om man skriver "Date" i asp får man ju en sträng med "/" eller "-" och då går det inte så bra att jämnföra i en sql. jag vet helt enkelt inte hur jag ska kunna jämnföra datum...

detta var kanske en dåligt förklaring på problemet. men jag vill gärna lösa det.

------------------
/ justine

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Om du med

i en sql

menar SQL server så kan man använda de funktioner för datum/tid som finns där. I stort sett alla DBMS har egna funktioner för att hantera datum och tid.

------------------
essentitia preter non sans multiplicandum

HermanMedlem sedan maj 2001431 inlägg
#3

jo då det går utmärkt

Exemmpel för Access

SQL="SELECT * FROM tbl WHERE flddate>#" & Date() & "#"

------------------
Allt som oftast förbryllas jag
Det som nyss kändes tungt
Förbyts till motsatsen nästa dag
Märkligt att det kan bli så lugnt

justineMedlem sedan maj 200167 inlägg
#4

ursäkta mig att jag hade lite bråttom och formulerar mig inte så bra då.

så ni menar att det fungerar att jämnföra "9/12/2001" med "8/1/2002" och den förstår att den andra är 'större'?

------------------
/ justine

HermanMedlem sedan maj 2001431 inlägg
#5

Korrekt :)

------------------
Allt som oftast förbryllas jag
Det som nyss kändes tungt
Förbyts till motsatsen nästa dag
Märkligt att det kan bli så lugnt

justineMedlem sedan maj 200167 inlägg
#6

hundra procent säker?

jag provade och då tyckte inte jag att det fungerade...
jag skrev:

"WHERE fStartDatum < " & Date & " AND fSlutDatum > " & Date

------------------
/ justine

@ndersMedlem sedan juni 200032 969 inlägg
#7

du ska ha brådgård runt datum i sql-frågan (hoppas fälten i tabellen är av datumtyp bara...)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

erkaMedlem sedan dec. 19996 522 inlägg
#8

glöm inte # med datumen

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

erkaMedlem sedan dec. 19996 522 inlägg
#9

@nders hade mer brådbråttom än jag ...igen.. vad är en brådgård @nders ;)

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

EclipseMedlem sedan juli 20003 825 inlägg
#10

Tips
Det har sina fördelar att ha svenskt typ av datum även på en amerikansk eller helengelsk webbplats.

index.asp?date=2001-05-23
index.asp?date=5/23/2001

En smaksak kanske... men jag gillar inte utséendet på ett amerikanskt datum. :-)

------------------
"Never underestimate your opponents." - Name the movie.

justineMedlem sedan maj 200167 inlägg
#11

genast förstod jag ännu mindre.

1: fälten i min databas är INTE datumtyp. men det skrivs in "3/3/2001"

2: vad ska jag ha brädgård runt? både i fältet och runt "Date"?

------------------
/ justine

EclipseMedlem sedan juli 20003 825 inlägg
#12

Öööhhh... om du inte har fälten som datum typ blir det genast problematiskt. Då kan du ju hacka in helt omöjliga datum, typ 20001-005-23.

SELECT * FROM [news] WHERE [x_date] = #" & date() & "#;"

Du måste ha brädgårdar när du frågar om datum.

SELECT * FROM [news] WHERE [x_date] = '" & date() & "';"

Är ditt datumfält av typen text måste du ha enkelfjumpar.

SELECT * FROM [news] WHERE [x_view] = TRUE"
SELECT * FROM [news] WHERE [x_ID] = " & request("ID")

Frågar du efter en boolean (sant/falsk) eller efter nummerfält, antingen int eller räknare, ska du inte ha några fjumpar eller brädgårdar.

Detta gäller för Access.

www.olailindgren.se/jakob/aspfusk.doc
------------------
"Never underestimate your opponents." - Name the movie.

[Redigerat av Eclipse den 23 maj 2001]

justineMedlem sedan maj 200167 inlägg
#13

men... nu när jag har inte har fältet som datum-typ går det ju inte att jämnföra olika datum med varan. 23/9/2001 blir ju större än 9/12/2003.

kan jag bara ändra fältet till datum (det borde ju inte gå... eller? hur lägger jag isåfall in informationen?)

------------------
/ justine

EclipseMedlem sedan juli 20003 825 inlägg
#14

Förmodligen blir fälten tomma, vet ej. Ta en kopia av hela databasen och testa på!

Informationen lägger du in på samma sätt som du lägger in all annan information, det är ingen skillnad.

Skillnaden skulle i så fall vara brädgårdarna för datum i stället för enkelfjumparna som du använder i text formaterade fält.

Hur får du in datumet idag? Genom att skriva det för hand?

------------------
"Never underestimate your opponents." - Name the movie.

justineMedlem sedan maj 200167 inlägg
#15

... jag löste det på mitt egna sätt. säkert den sämsta programering som finns, men det funkar iallafall.

datumen tar jag från Date
jag lägger ihop year month och day.

det som ligger i databasen kommer från dropdownmenyer. och läggs samman till datum.

det fungerar iallafall.

------------------
/ justine

EclipseMedlem sedan juli 20003 825 inlägg
#16

Det låter som en högst temporär lösning... men är du nöjd är väl jag nöjd.

---
Ett alternativ kan vara att ha riktiga datum i dropdown menyerna och sen lägga in dom i datumfältet. Då blir ju allt korrekt från början.

Jag tycker du ska överväga om det inte är värt att göra om delar av din lösning. Jag har en svag känsla av att du kommer tacka dig själv att du tog dig tid till att fixa ordentliga datum i ett senare skede.

Även om jag personlöigen älskar att fuska är det inte i samanhang som desa jag åsyftar, där lönar sig fusk sällan. Beklagar.

------------------
"Never underestimate your opponents." - Name the movie.

justineMedlem sedan maj 200167 inlägg
#17

visst har du rätt i att det är en dålig lösning. hmmm... men jag förstod inte hur du menade att jag skulle göra...

i dropdownmenyerna väljer man ett "start datum" från 3 menyer (år månad och dag) och ett "slut datum" men jag vet inte hur jag lägger in dem i databasen på något annat sätt än det jag gjort. (dvs, lägga ihop dem till en sträng.)

du får gärna hjälpa mig men det fungerar nu iallafall.

------------------
/ justine

EclipseMedlem sedan juli 20003 825 inlägg
#18

Du gör ju helt rätt...

---
response.write "<SELECT NAME=""myDate"">" & vbCRLF
response.write "<OPTION VALUE=""" & date() & """>I dag</OPTION>" & vbCRLF
response.write "<OPTION VALUE=""" & dateAdd("d", 1, date()) & """>I morgon</OPTION>" & vbCRLF
response.write "<OPTION VALUE=""" & dateAdd("d", 2, date()) & """>I övermorgon</OPTION>" & vbCRLF
response.write "</SELECT>" & vbCRLF

---
Uppdatera databasen:

SQL = "UPDATE [news] SET [x_date] =#" & request("myDate") & "# WHERE [x_ID] = " & request("x_ID")

---
Förklaringar
vbCRLF = vbCarragr Return Line Feed, radbrytningar i koden, (ej i html, använd <BR> för det)

dateAdd("d", 1, date()) = addera en dag till dagens datum. "d" betyder dag, "h" betyder timme. Kolla manualen för de andra. Datorn håller reda på om det är månadsskifte eller nytt dygn osv. Superhandy!

Man kan även backa i tiden, dateAdd("d", -10, date()) backar tio dagar från dagens datum.

---
Kom ihåg!

- Brädgårdar vid datum!
- Enkelfjumpar vid text!
- Inget vid true/false eller siffror!
------------------
"Never underestimate your opponents." - Name the movie.

[Redigerat av Eclipse den 24 maj 2001]

EclipseMedlem sedan juli 20003 825 inlägg
#19

Äh... jag läser slarvigt... Det där var ju inte svaret på din fråga.

I ditt fall hade jag uppmanat användaren att skriva in datumet i stilen ÅÅÅÅ-MM-DD. Sen kan man kolla så det är ett korrekt datum med den inbyggda funktionen IsDate...

IF IsDate(request("myDate")) = FALSE THEN myDate = date() ELSE myDate = request("myDate")

---
Man kan använda samma tillvägagångssätt om man gör en almanacka, index.asp?date=2001-05-27.
Om då n¨gon försöker fylla i ett datum som inte finns blir man stillsamt förflyttad till dagens datum, alltså inga jobbiga felmeddelanden.

------------------
"Never underestimate your opponents." - Name the movie.

evesveMedlem sedan sep. 2001163 inlägg
#20

Vad gör jag för fel här?

<%nu = Date%>
<%
Addera = "SELECT * FROM databas where Hemresedag > #"& nu &"#;" AND Avdelning = '"&avd&"' AND Grupp = '"&grp&"' ORDER BY "&ordna
%>
Plockar jag bort
Hemresedag > #"& nu &"#;"
så funkar det.

[Redigerat av evesve den 01 okt 2001]

135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)