J'essaie de créer un rapport qui obtient des enregistrements d'une base de données SQL Server où la date de livraison est aujourd'hui.
J'ai essayé
select * from (tablename)
where delivery_date = getdate()
Bien que cela ne m'ait pas donné d'erreurs, cela ne m'a donné aucun enregistrement non plus.
Je suppose que c'est parce que toutes les dates sont comme:
2016-03-15 00:00:00.000
Peut-être que je dois tronquer la date pour supprimer l'horodatage, puis essayer?
Vous pouvez essayer une requête comme ci-dessous
select * from (tablename)
where CAST(delivery_date as date) = CAST(getdate() as date)
De plus, si toutes les dates de livraison ont une partie de temps comme 00:00:00.000
bien sûr alors
select * from (tablename)
where delivery_date = CAST(getdate() as date)
fonctionnerait aussi bien.
Si la date de livraison est toujours minuit (00:00:00.000
), puis comparez-le comme ceci:
select * from (tablename)
where delivery_date = datediff(d, 0, getdate())
L'utilisation de datediff
comme ceci est un moyen rapide de tronquer la partie temporelle d'une valeur datetime.
Je viens de créer 2 paramètres. Un pour StartTime
et un pour EndTime
et utilisez ceux de ma requête.
DECLARE @StartTime DATETIME,
@EndTime DATETIME
SET @StartTime = DATEDIFF(d,0,GETDATE())
SET @EndTime = DATEADD(d,1,@StartTime)
SELECT *
FROM [tablename]
WHERE delivery_date >= @StartTime
AND delivery_date < @EndTime
Essaye ça:
DECLARE @Today DATETIME
SET @Today= CONVERT(date, getdate())
select * from (tablename)
where delivery_date = @Today
Vous devez supprimer la partie heure du champ delivery_date ET la valeur GETDATE ().
SELECT *
FROM (tablename)
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)