Sql 选择一个日期字段与另一个日期字段的比较结果+24小时

Sql 选择一个日期字段与另一个日期字段的比较结果+24小时,sql,datetime,sap-ase,Sql,Datetime,Sap Ase,在sybase ase 15.5中,我需要从一个表中提取距离另一个表中的日期只有24小时的值 这是我的错误代码: SELECT p_generaldata.admissiontime,* FROM Patient.dbo.P_MonVals P_MonVals INNER JOIN Patient.dbo.P_GeneralData P_GeneralData ON P_MonVals.PatientID=P_GeneralD

在sybase ase 15.5中,我需要从一个表中提取距离另一个表中的日期只有24小时的值

这是我的错误代码:

SELECT p_generaldata.admissiontime,*
 FROM   Patient.dbo.P_MonVals P_MonVals 
               INNER JOIN Patient.dbo.P_GeneralData P_GeneralData 
               ON P_MonVals.PatientID=P_GeneralData.PatientID
where  p_generaldata.admissiontime < P_MonVals.entertime +1
order by p_generaldata.patientid ASC
我试图返回p_monvals中的所有行,其中该表中的entertime在允许时间后不到24小时

im获取的错误为INT与DATETIME不兼容

非常感谢您的帮助

谢谢

使用函数dateadd对日期时间中的1天进行求和:

dateadd(dd, 1, P_MonVals.entertime)
参考:。

查看函数,并在entertime中添加一天

文档中的示例:

为日期添加一天:

declare @a date
select @a = "apr 12, 9999"
select dateadd(dd, 1, @a)
就你而言

...
where  p_generaldata.admissiontime < dateadd(dd, 1, P_MonVals.entertime)
您想使用以下功能:

SELECT p_generaldata.admissiontime, *
FROM Patient.dbo.P_MonVals P_MonVals 
INNER JOIN Patient.dbo.P_GeneralData P_GeneralData 
ON P_MonVals.PatientID=P_GeneralData.PatientID
WHERE p_generaldata.admissiontime < DATEADD(dd, 1, P_MonVals.entertime)
ORDER BY p_generaldata.patientid ASC

我添加了你的行,但它仍然返回了入学日期后三天的周一的行。im所关注的是入院时间,比如2014年4月14日20:00:00,它将返回monvals的行,输入时间介于2014年4月14日20:00:00到2014年4月15日20:00:00之间,因此并非所有结果都来自第二天,而是从入院时间算起的24小时。非常感谢你能不能用dateadd,在这种情况下用小时代替天?谢谢伙计。解决方案是在dateadd…中,其中P_MonVals.entertime介于P_generaldata.admissiontime和dateaddhh,24,P_generaldata.admissiontime…之间。。。。谢谢,没问题,很高兴它有帮助。