Avatar billede DanishBear Seniormester
28. september 2021 - 07:55 Der er 6 kommentarer og
3 løsninger

Søge efter dato interval

Jeg er rendt sur i min SQL strenge :-(

Hvordan kan jeg lave en søgestreng i SQL som søger i en DB efter en hvis antal dage/uger

Select * from bla where blabla osv.

SELECT * FROM [DBdata] WHERE [Datoen]  (osv.)

Har rodet med det i et par dage og er rendt sur i det :-( synes lige meget hvad jeg har prøvet på (selv Nettet) kan jeg ikke finde de dataer mellem  2 datoer eller uge

F.eks 10-10-2021 17-01-2021

Takker på forhånd, DanishBear
Avatar billede Gustav Ekspert
28. september 2021 - 09:06 #1
Det kunne være:

SELECT * FROM [DBdata] WHERE [Datoen] BETWEEN #2021/10/10# AND #2021/01/17#
Avatar billede DanishBear Seniormester
28. september 2021 - 21:08 #2
Hej Gustav

Det virker nogenlunde, MEN tager jeg en *.recordcount på dem virker der forkert, måske har jeg udtrykket mig forkert.
Sådan ser min streng ud

mine data er xx-xx-2021 osv.

ToDayN=Date() '+10
ToDayMax=6

SQL = "SELECT * FROM [DBdata] WHERE [Datoen] BETWEEN #" & ToDayMax & "# AND #" & ToDayN & "#"
Jeg vil gerne kunne tælle og udskrive de data der er mellen ToDayMax og ToDayN og evt. teste med anden dato (+10)
Avatar billede DanishBear Seniormester
28. september 2021 - 21:40 #3
Det eneste jeg vil ha det til at gøre er at KUN at få de antal og data der er mellem de 2 datoer som jeg har sat, lige meget hvad datoerne er :-)
Avatar billede michael_stim Ekspert
28. september 2021 - 22:04 #4
ToDayMax er ikke en dato
Avatar billede DanishBear Seniormester
28. september 2021 - 22:12 #5
Damn Michael, kunne ikke se skoven :-) Tak for du så det :-), nu kører det .
Avatar billede Gustav Ekspert
29. september 2021 - 08:32 #6
> ..nu kører det
Det er desværre noget, du tror, for det vil fejle for enhver dato tidligere end den 13. i måneden.

For det første: Datoer har ikke et format, kun en værdi. Når værdien skal vises, bruges et format, og specificerer man ikke hvilket, bruges det fra indstillingerne i Windows.

Dernæst: Access SQL kræver enten et tekstudtryk for en datoværdi formateret enten som det "omvendte" US-format, mm/dd/yyyy, eller det universelle ISO-format, yyyy-mm-dd. Skriver du fx 3. september som 3-9-2021, vil Access SQL læse det som 9. marts. Det fleste andre SQL-dialekter forventer dog formatet yyyy-mm-dd, og det gør ADO også, så det nemmeste er at vænne sig til dette format.

Så det kunne se således ud:

Dim Offset      As Integer
Dim Interval    As Integer
Dim ToDay      As Date
Dim ToDayMax    As Date
Dim FirstDate  As String
Dim LastDate    As String
Dim SQL        As String

Offset = 10    ' eller 0 eller en anden værdi.
Interval = 6    ' eller en anden værdi.

ToDay = DateAdd("d", Offset, Date)
ToDayMax = DateAdd("d", Interval, ToDay)

FirstDate = Format(ToDay, "yyyy\-mm\-dd")
LastDate = Format(ToDayMax, "yyyy\-mm\-dd")

SQL = "SELECT * FROM [DBdata] WHERE [Datoen] BETWEEN #" & FirstDate & "# AND #" & LastDate & "#"
Avatar billede DanishBear Seniormester
02. oktober 2021 - 16:58 #7
TAkker Gustav
Fandt også ud af det senere :-(

Kører Classic ASP og er selvlært på alle måder, men havde en dum fornemmelse af det var galt stadigvæk.
Kører xx-xx-xxxx i min Access.

Tastede dine linier ind, As xxx blev ' ud, ville ikke acceptere det :-(, ved ikke hvorfor den ikke acceptere As xx (måske pga. det er asp.net?)
næste fejl er format, det godkende den ikke :-(

Kan og vil du hjælpe mig med det?

Mvh, DanishBear
Avatar billede Gustav Ekspert
02. oktober 2021 - 17:20 #8
Ja. Det er VBScript, og der findes Format ikke, kun FormatDateTime.
https://www.w3schools.com/asp/asp_ref_vbscript_functions.asp

Så måske må du bygge strengen manuelt af datoens bestandele:

FirstDate = Year(ToDay) & "-" & Month(ToDay) & "-" & Day(ToDay)
Avatar billede DanishBear Seniormester
02. oktober 2021 - 18:32 #9
TAkker Gustav, det hjalp mig gevaldigt, nå kører det bare ud af det, som jeg vil ha det :-)

Mvh. DanishBear

Og så lærte jeg også mere af det :-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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