189 messaggi dal 27 agosto 2004
Ciao ragazzi,
ho la necessità di fare tramite Stored Procedure (Sql Server) una differenza tra date e arrotondare la differenza al giorno.

Es :

03/04/2013 23:00 - 03/04/2013 10:00 = 1g
03/04/2013 23:00 - 03/04/2013 11:30 = 0g

04/04/2013 22:00 - 03/04/2013 09:00 = 2g
04/04/2013 20:00 - 03/04/2013 15:30 = 1g


In pratica sotto le 12 h non calcolo il giorno mentre sopra le 12h lo calcolo

grazie in anticipo!!!
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
se ho ben compreso,
SET NOCOUNT ON;
DECLARE @d1 datetime = '20130101 00:00:00';
DECLARE @t table (dt datetime);
INSERT INTO @t 
  VALUES ('20130101 11:59:00'), ('20130101 12:00:00'),
    ('20130102 11:59:00'), ('20130102 12:00:00'),
    ('20130103 11:59:00'), ('20130103 12:00:00');


SELECT @d1 AS [Anchor], t.dt AS [Reference], DATEDIFF(HOUR, @d1, t.dt) AS [Real Hour Delta],
  (DATEDIFF(HOUR, @d1, t.dt) /24) + ((DATEDIFF(HOUR, @d1, t.dt) - ((DATEDIFF(HOUR, @d1, t.dt) /24) * 24)) / 12) AS [Difference]
  FROM @t t
  ORDER BY t.dt;
--<---------
Anchor                  Reference               Real Hour Delta Difference
----------------------- ----------------------- --------------- -----------
2013-01-01 00:00:00.000 2013-01-01 11:59:00.000 11              0
2013-01-01 00:00:00.000 2013-01-01 12:00:00.000 12              1
2013-01-01 00:00:00.000 2013-01-02 11:59:00.000 35              1
2013-01-01 00:00:00.000 2013-01-02 12:00:00.000 36              2
2013-01-01 00:00:00.000 2013-01-03 11:59:00.000 59              2
2013-01-01 00:00:00.000 2013-01-03 12:00:00.000 60              3 

saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.