29. maj 2012 - 12:11Der er
1 kommentar og 1 løsning
varchar(20) til date
Har en tabel der er oprettet som "SaleDate varchar(20)", som jeg rigtigt gerne ville have omdannet til date i en forespørgsel, således at jeg kan trække statistik på salg pr time. Har ingen idé om hvordan scriptet skal opsættes, men kan forstå på de ting jeg har fundet på nettet at feltet skal omsættes til date. Værdierne i databasen er sat ind således = 25/05/2012 12:28:24.
det hele ligger lidt udenfor den smule jeg har lært om sql, men har fundet en anden der har problemet på nette, og han blev anbefalet noget a'la SELECT CONVERT(VARCHAR(20),SaleDate,131), replace(str(datepart(hour, SaleDate),2,0),' ','0') + ':00' as Hour, count(SaleId)as 'Customer Count', sum(SaleTotal) as Sales, avg(SaleTotal) as 'Average Sales' FROM SALE WHERE SaleDate between '25/05/2012' and '29/05/2012' GROUP BY CONVERT(VARCHAR(20),SaleDate,101), datepart([hour],SaleDate) ORDER BY CONVERT(VARCHAR(20),SaleDate,101), datepart([hour],SaleDate) asc
Du skal i stedet lave feltet om til en INT(11), på den måde kan du indsætte et timestamp uden noget at du senere hen skal lave en masse for at konfigurere hvordan du skal regne det ud.
Når du bruger INT(20) så kan du nemlig bare trække værdien ud, det er nemlig et rent tal, ingen specieltegn eller noget, hele strengen kan nemlig bruges i et regnestykke.
Og i det en time er 3600 sekunder så skal du bare lave sådan der skal være en difference på 3600 sekunder. På den måde kan du regne det i timer, samt at du kan via date() funktionen få lavet sådan at strengen kan vises ligesom du vil, som tid, som dato, som år, som måned, eller forskellige kombinationer.
Det ville jeg i hvert fald gøre
Synes godt om
Ny brugerNybegynder
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.