Domanda

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT ixInterval, DATEDIFF(hour, dtStart, dtEnd) FROM fogbugz.dbo.TimeInterval
WHERE dtEnd is not NULL

IntervalID è un int, la durata è un float

Sto cercando di mettere tutte le durate orarie nella colonna Durata ... Presumo che anche se è inferiore a un'ora utilizzerà una frazione, motivo per cui ho messo un float?

Guida.

PS: sta funzionando bene senza errori, ma dopo averlo fatto la tabella degli intervalli è ancora vuota ... So che i dati sono nella tabella TimeInterval però ...

È stato utile?

Soluzione

Non sono sicuro del motivo per cui i tuoi dati non vengono visualizzati, ma DATEDIFF non restituirà un float. Per ottenere un float, probabilmente vorrai usare un'unità di tempo più piccola e dividere per il numero delle tue unità al minuto. Esempio:

DATEDIFF(second, dtStart, dtEnd) / (3600.0)

Altri suggerimenti

DATEDIFF restituisce un Int del numero di limiti della parte della data attraversati. Mi aspetto che tu ottenga la soglia del numero di ore di durata, a meno che non ci sia un problema con la conversione implicita da Int a Float.

È anche utile pubblicare il messaggio di errore ricevuto.

Per inserire le frazioni effettive di un'ora, utilizzare:

INSERT INTO timecrunch.dbo.intervals (IntervalID, Duration) 
SELECT 
  ixInterval, 
  DATEDIFF(mi, dtStart, dtEnd) / 60.0
FROM 
  fogbugz.dbo.TimeInterval
WHERE 
  dtEnd is not NULL

DATEDIFF ti restituisce sempre un valore INT, mai una frazione.

Prova a eseguire SELECT da solo con il bit INSERT, per verificare che la tua query stia effettivamente restituendo alcuni dati.

Modifica: come altri hanno già detto, DATEDIFF restituisce un int, non un float, ma ciò non dovrebbe impedire a INSERT di inserire alcuni dati.

In primo luogo quali risultati si ottengono eseguendo la selezione?

In SQL Server DateDiff restituisce un int ( Vedi MSDN )

DATEDIFF restituirà un int non un float - è questo il problema che stai riscontrando?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top