十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
declare @d1 datetime;
目前创新互联公司已为成百上千家的企业提供了网站建设、域名、虚拟空间、网站托管、服务器托管、企业网站设计、德安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
set @d1='你的时间';
set @d1=dateadd(dd,1,@d1);-- 加一天
set @d1=dateadd(hh,8,@d1);--加8小时
if(@d1getdate())--大于当前时间
{
}
什么数据库,,,
sqlserver可以
select *
from 表
where convert(varchar(19),时间字段,120)=convert(varchar(14),dateadd(hh,-8,getate()),120)+'00:00'
时间字段使用的是int类型 ? 一般sqlserver用datetime来存储日期,也有用timestamp来存储的。 你可以试试timestamp的值和你mysql中的int所代表的时间值是否一致? 另外,尽可能使用相应的数据类型来存储时间,否则程序中都需要转换。
这个SqlServer我不怎么用(一起搞.net的时候用过一阵子),但是我在用mysql的时候也出现过类似的我称之为8小时的问题。
你用hibernate的时候可以配置数据源的,如果没有配的话那么hibernate自己会有一个数据源,就是这个数据源导致了时间一长就会抛异常。
因为mysql的默认连接时间是8小时,如果八小时内没有使用已经建立的连接那么就会自动断开这个连接。
而hibernate自带的数据源一旦创建好了连接池以后就不会去判断是否连接任然有效,他会认为连接还在,其实已经不再了,因此用老的连接就会异常。
估计SqlServer也有这个问题。建议你给hibernate配置一下数据源(并在其中声明要检测连接的有效性)