使用SQL Server 2000:将字符串转换成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
T_cardevent.cardeventtime列数据类型是VARCHAR。
在表Cardeventtime值是080002,091235 ....等等...,
当我执行上述查询它示出了用于将表达式转换为数据类型日期时间算术快递溢出错误。
@marc_s。但日期也显示为01/01/1900 08:00:02。我只需要时间 – Gopal 2009-09-27 15:11:50
然后使用转换(DATETIME,,101)。关于转换查看更多信息:http://msdn.microsoft.com/en-us/library/ms174420.aspx –
tster
2009-09-27 15:34:09
@Gopal:在SQL Server 2000中,你只有DATETIME其中包含日期和时间。只有SQL Server 2008有一个特定的TIME数据类型,只有TIME。 – 2009-09-27 17:13:13