Neem de volgende functie in MS SQL:
DATEDIFF ( datepart , startdate , enddate )
Voor een query die bepaalde intervallen moet berekenen (eens per 4 weken, eens per 6 maanden etc.) heb ik een query gemaakt die dynamisch de 'datepart' in DATEDIFF invult. Voor het echte werk wil ik deze query omzetten naar MS SQL.
Het probleem is nu dat datepart in Access een tekenreeks is en in MS SQL een soort constante. Zie het verschil:
Access: DATEDIFF ( "ww" , startdate , enddate )
MS SQL: DATEDIFF ( ww , startdate , enddate )
Mijn vraag is nu hoe je in MS SQL de 'datepart' dynamisch kunt maken.
Uiteraard heb ik al hier en op Google gezocht. Uiteraard kan ik de query ook dynamisch opbouwen of CASE gebruiken, maar dat is m'n laatste redmiddel.
DATEDIFF ( datepart , startdate , enddate )
Voor een query die bepaalde intervallen moet berekenen (eens per 4 weken, eens per 6 maanden etc.) heb ik een query gemaakt die dynamisch de 'datepart' in DATEDIFF invult. Voor het echte werk wil ik deze query omzetten naar MS SQL.
Het probleem is nu dat datepart in Access een tekenreeks is en in MS SQL een soort constante. Zie het verschil:
Access: DATEDIFF ( "ww" , startdate , enddate )
MS SQL: DATEDIFF ( ww , startdate , enddate )
code:
1
2
3
4
5
6
7
| SELECT id,
startdatum, /* referentiedatum */
Datum, /* huidige datum */
interval, /* 1..n */
periode, /* ww, mm, yy */
DateDiff([periode],[startdatum],[Datum]) AS diff
FROM tblService |
Mijn vraag is nu hoe je in MS SQL de 'datepart' dynamisch kunt maken.
Uiteraard heb ik al hier en op Google gezocht. Uiteraard kan ik de query ook dynamisch opbouwen of CASE gebruiken, maar dat is m'n laatste redmiddel.
[ Voor 4% gewijzigd door xtra op 25-04-2004 11:47 . Reden: Toevoeging ]