Disons que j'ai cette table:Comment ajouter/soustrayez jours à une date
DECLARE @Var INT
SET @Var = (select day from source)
SELECT * FRom TMP
INTO #TARGET
Where tmp.date >= dateadd(day,datediff(day,0,GETDATE()),0) - @Var
tmp.date <= dateadd(day,datediff(day,0,GETDATE()),0)
La requête obtenir le résultat si @val != 0
mais ne fonctionnent pas lorsque @val=0
'DATEADD (jour, datediff (jour, 0, GETDATE()), 0)' - cette chose Diminue le temps de la date et rien de plus. Identique à la conversion en type 'date'. Lorsque @var est égal à zéro, vous devez égaler les dates. Vous 'tmp.date' stocke les dates avec le temps. Donc, finalement, vous essayez de localiser des enregistrements avec par exemple 'tmp.date = 2015-03-01 12: 30: 451' en appliquant ce filtre:' tmp.date> = "2015-03-01 00:00:00" et tmp.date> = "2015-03-01 00:00:00" 'qui est évidemment toujours faux. –
* _à égalité dates -> deux dates égales. oui, et filtre '> = ... <=' bien sûr. –
@IvanStarostin oh yeeess vous savez que je comprends, donc je remercie je devrais faire ceci: 'tmp.date> = dateadd (jour, datediff (jour, 0, GETDATE()), 0) - @Var ET tmp.date <= dateadd (dd, -0, GETDATE()) ' – stoner