Avatar billede DanishBear Mester
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 Forsker
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 Mester
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 Mester
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 Mester
28. september 2021 - 22:12 #5
Damn Michael, kunne ikke se skoven :-) Tak for du så det :-), nu kører det .
Avatar billede Gustav Forsker
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 Mester
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 Forsker
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 Mester
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

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