[MSSQL/ASP.NET] Datumtijd als varchar: Kan niet totaliseren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Erwin_Br
  • Registratie: Oktober 2005
  • Laatst online: 23-08 21:25
Ik werk met een database die helaas een datum + tijd opslaat als varchar. Nu converteer ik deze string naar een datum en haal ik het tijd gedeelte eraf op de volgende manier:


code:
1
CONVERT(varchar, startdate, 105) AS startdate


De datum wordt nu goed weergegeven, maar vreemd genoeg heb ik nog wel een probleem. Ik wil namelijk totaliseren (SUM) op een veld genaamd "regularhrs".

De query "ziet" op een of andere manier de tijd nog steeds in de datum staan en totaliseert daarom mijn uren niet.

Voorbeeld (versimpeld):

Orginele waarden in database:
(datum, aantal uren)
1-1-2009 7:00, 8
1-1-2009 14:00, 2

Mijn query maakt er van:
1-1-2009, 8
1-1-2009, 2

Maar wat ik eigenlijk wil:
1-1-2009, 10

Wat doe ik fout? Ik heb me helemaal kapot gezocht op Google, en kom er niet meer uit.


code:
1
2
3
4
5
6
"SELECT craft, laborcode, SUM(regularhrs) AS hrs, transtype, CONVERT(varchar, startdate, 105) AS startdate " +
                        "FROM dbo.labtrans WHERE " +
                        "(DATEPART(year, enterdate) = @year) AND " +
                        "(DATEPART(month, enterdate) = @month) AND " +
                        "(DATEPART(day, enterdate) = @day) " +
                        "GROUP BY craft, laborcode, startdate, transtype";


--Erwin

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:04
Moet je dan ook niet in je Group by die convert doen:

SQL:
1
2
3
4
5
6
SELECT craft, laborcode, SUM(regularhrs) AS hrs, transtype, CONVERT(varchar, startdate, 105) AS startdate 
                        FROM dbo.labtrans WHERE 
                        (DATEPART(year, enterdate) = @year) AND 
                        (DATEPART(month, enterdate) = @month) AND 
                        (DATEPART(day, enterdate) = @day) 
                        GROUP BY craft, laborcode, CONVERT(varchar, startdate, 105), transtype;

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
Waarschijnlijk word er nu nog steeds op de kollom gegroepeert? zet de volledige convert eens in de group by

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Volgens mij geeft urk_forever inderdaad het goede antwoord. Volgens de SQL standaar kan je niet op aliassen groeperen. Dus waarschijnlijk groepeert hij op de column startdate en niet het alias.

Dus je zult de volledige convert op moeten nemen bij het groeperen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Erwin_Br
  • Registratie: Oktober 2005
  • Laatst online: 23-08 21:25
Opgelost! :D

Urk_forever had het inderdaad bij het rechte eind. Bedankt hiervoor! _/-\o_

--Erwin