Avatar billede cbm Nybegynder
11. april 2005 - 13:56 Der er 6 kommentarer og
1 løsning

getdate() format

hejsa

hvis jeg sætter følgende qry ind returnerer den 1 forekomst (d.d = 11 april 2005)
select count(activity.accountid) as antal from ACTIVITY INNER JOIN OTI_ACCOUNT_EXT ON ACTIVITY.ACCOUNTID = OTI_ACCOUNT_EXT.ACCOUNTID where OTI_ACCOUNT_EXT.ACCOUNT_SELECTION = 'growth' and activity.startdate >= (getdate() - (DATEPART(dw, getdate()) - 08)) and activity.startdate <= (getdate() + 14 - DATEPART(dw, getdate())) and (activity.USERID = 'U6UJ9A00001I') AND (activity.TYPE = 262145)

hvis jeg udskifter getdate() med f.eks. 2005-04-11 så returnerer den 0. Hvordan kan det være?
Avatar billede bennytordrup Nybegynder
11. april 2005 - 13:59 #1
Det kan være datoindstillinger på SQL Serveren.

Jeg vil anbefale dig at bruge ISO-formatet ved angivelse af dato konstanter. Det er på formen yyyymmdd, så du skal udskifte getdate() med 20050411.
Avatar billede cbm Nybegynder
11. april 2005 - 15:49 #2
har jeg også prøvet men jeg får stadig samme resultat
Avatar billede janus_007 Nybegynder
11. april 2005 - 18:38 #3
Det tabel design er ikke videre smart i min verden. Jeg ville sætte mig ned og lave det om, på den måde vil dine selects heller ikke se så mystiske ud. Og jeg kunne kun forestille mig at dine datoselekteringer vil forekomme dig væsentligt nemmere.

Udover det kan jeg se at du bruger weekday... kunne det være det ? (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_da-db_2mic.asp)

Hvordan står activity.startdate? i hvilket format altså?
Avatar billede cbm Nybegynder
12. april 2005 - 09:35 #4
altså det hele virker fint nok som det står der, men i min applikation (3. parts produkt hvor jeg ikke kan ændre tabeldesign) kan den ikke genkende visse date formater, derfor skal jeg have det ændret. Jeg bruger weekday da jeg skal starte med mandagen i næste uge, da jeg skal have de næste 6 fulde uger, startende fra mandag næste uge.

tror jeg har forklaret mig lidt bedre nu :)
Avatar billede jtbroad Nybegynder
12. april 2005 - 15:27 #5
select getdate() + (9 - (DATEPART(dw, getdate())))

vil give dig datoen på mandag i næste uge hvis ikke du har lavet om på first day of week der er default sunday.

dvs:
activity.startdate >= (SELECT GETDATE() + (9 - (DATEPART(dw, GETDATE()))))
and activity.startdate <= (SELECT GETDATE() + (51 - (DATEPART(dw, GETDATE()))))

skulle give en seks ugers periode
Avatar billede jtbroad Nybegynder
12. april 2005 - 15:31 #6
select getdate() + (9 - (DATEPART(dw, getdate()))) as x,
datediff(week,(SELECT GETDATE() + (9 - (DATEPART(dw, GETDATE())))),(SELECT GETDATE() + (51 - (DATEPART(dw, GETDATE()))))) as y

jep, det giver seks uger.
Avatar billede cbm Nybegynder
03. maj 2006 - 16:18 #7
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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