Utilisation de SQL Server 2000:Conversion chaîne à problème datetime
SELECT PERSONID,
CARDEVENTDATE,
INTIME,
CASE
WHEN OUTTIME = INTIME THEN
'No PunchOut'
ELSE
OUTTIME
END AS OUTTIME,
CONVERT(char(8), CASE
WHEN DateAdd(Day, - DateDiff(Day, 0, OutTime), OutTime) > '18:00:00' THEN
Cast('18:00:00' AS datetime)
ELSE
DateAdd(Day, - DateDiff(Day, 0, OutTime), OutTime)
END - CASE
WHEN DateAdd(Day, - DateDiff(Day, 0, InTime), InTime) < '09:00:00' THEN
Cast('09:00:00' AS datetime)
ELSE
DateAdd(Day, - DateDiff(Day, 0, InTime), InTime)
END, 8) AS WorkTime
FROM (SELECT T_PERSON.PERSONID,
T_CARDEVENT.CARDEVENTDATE,
MIN(T_CARDEVENT.CARDEVENTTIME) AS INTIME,
MAX(T_CARDEVENT.CARDEVENTTIME) AS OUTTIME
FROM T_PERSON
INNER JOIN T_CARDEVENT ON T_PERSON.PERSONID = T_CARDEVENT.PERSONID
GROUP BY T_PERSON.PERSONID, T_CARDEVENT.CARDEVENTDATE) DERIVEDTBL
colonne T_cardevent.cardeventtime type_données Varchar.
Dans le tableau des valeurs de Cardeventtime sont 080002, 091235 .... ainsi de suite ...,
Quand j'exécution de la requête au-dessus montrant erreur arithmétique express débordement pour convertir l'expression de type de données Datetime.
@marc_s. Mais la date affiche aussi comme 01/01/1900 08:00:02. Je n'ai besoin que de l'heure – Gopal
Ensuite, utilisez Convert (DATETIME,, 101). Pour plus d'informations sur la conversion, voir: http://msdn.microsoft.com/en-us/library/ms174420.aspx –
tster
@Gopal: dans SQL Server 2000, vous avez uniquement DATETIME qui contient à la fois DATE et TIME. Seul SQL Server 2008 a un type de données TIME spécifique qui est uniquement TIME. –