Non riesco a determinare il modo migliore per confrontare le date in SQL in base al mese e all'anno.Confronto di data di SQL Server in base al mese e all'anno
Effettuiamo calcoli in base alle date e poiché la fatturazione si verifica su base mensile, la data del mese ha causato un maggiore ostacolo.
Ad esempio
DECLARE @date1 DATETIME = CAST('6/15/2014' AS DATETIME),
@date2 DATETIME = CAST('6/14/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date1 <= @date2
L'esempio di cui sopra non sarebbe tornato alcuna riga dal @ date1 è maggiore di @ date2. Quindi mi piacerebbe trovare un modo per prendere il giorno fuori dall'equazione.
Analogamente, la seguente situazione mi dà dolore per lo stesso motivo.
DECLARE @date1 DATETIME = CAST('6/14/2014' AS DATETIME),
@date2 DATETIME = CAST('6/15/2014' AS DATETIME),
@date3 DATETIME = CAST('7/1/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date2 BETWEEN @date1 AND @date3
ho fatto conversioni in linea delle date per ricavare il primo giorno e l'ultimo giorno del mese per la data specificata.
SELECT *
FROM tableName
WHERE date2 BETWEEN
DATEADD(month, DATEDIFF(month, 0, date1), 0) -- The first day of the month for date1
AND
DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, date2) + 1, 0)) -- The lastday of the month for date3
Ci deve essere un modo più semplice per farlo. Eventuali suggerimenti?
Quale versione di SQL Server? – christiandev
@christiandev Stiamo usando SQL 2008. –
Come nota a margine, se non si utilizza la parte dell'ora, è possibile utilizzare il tipo di dati 'DATE'. – christiandev