php关于时间区间判断问题?

码无边 2011-08-24 04:36:53
会议预定的时候有一个开始时间,一个结束时间,怎么将添加的这个时间段和数据库里面的时间段进行比较呢?如果添加属于已有预定的时间段,则添加失败!疑问之处是;关于php时间区间判断有点疑惑!
...全文
634 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyl_ztj 2011-08-30
  • 打赏
  • 举报
回复
5
/* 初始化信号量,串口参数,接收线程,注册接收回调函数 */
ulRet = Init485Sem();
CHECK_RET_OK_RN(ulRet, ulRet);
ulRet = InitCommParam();..;
ulRet = InitCommThread();..;
CCU_UARTDrvRecvReg(Rev485Msg);return CCU_OK;
6 ulRet = ADA_CreatThread((FUNC_ENTRY)rs485proc, &ucChan0, CCU_NORMAL_STACK_SIZE, &rs485thread0); 4个
if CCU_OK != ulRet
DBG_COMM_PRINT(LP_ERR,"create thread rs485proc fail\r\n");return ulRet;
return CCU_OK;
7 for ( i = 0 ; i < ALL_CCU_SERIAL_NUM ; i++ )
ulRet = CommOpen((UINT8)i);
if ( CCU_OK != ulRet )
{
return ulRet;
}
}

return CCU_OK;
码无边 2011-08-30
  • 打赏
  • 举报
回复
说错了,事件怎么调用储过程
码无边 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 moocky 的回复:]

引用 20 楼 zy205817 的回复:

引用 18 楼 zy205817 的回复:

现在有一个问题就是关于区间;假如已有时间段,于自己添加的时间段的比较;是不是有4种情况呢?
1)添加数据和已有数据左边有交集。
2)添加数据和已有右边数据有交集。
3)添加数据和已有数据时被包含关系。
4)添加数据和已有数据时包含关系。
不知道自己描述的对不对!这是判断是否有交集的情况!……
[/Quote]呵呵,你的方法用了,还不错!请教一个问题,mysql的时间怎么调用存储过程?
DELIMITER $$

-- SET GLOBAL event_scheduler = ON$$ -- required for event to execute but not create

CREATE EVENT `CRM_REP`.`event_OrderMeet`

ON SCHEDULE


DO
BEGIN
CALL prc_OrderMeeting();
END$$

DELIMITER ;
码无边 2011-08-30
  • 打赏
  • 举报
回复
是mysql的存储过程!
木目子 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zy205817 的回复:]

引用 18 楼 zy205817 的回复:

现在有一个问题就是关于区间;假如已有时间段,于自己添加的时间段的比较;是不是有4种情况呢?
1)添加数据和已有数据左边有交集。
2)添加数据和已有右边数据有交集。
3)添加数据和已有数据时被包含关系。
4)添加数据和已有数据时包含关系。
不知道自己描述的对不对!这是判断是否有交集的情况!可否根据这样的情况写sql语句。
PHP cod……
[/Quote]
什么地方没考虑全?你真执着,我给你的方法你试了吗?
码无边 2011-08-26
  • 打赏
  • 举报
回复
没人顶吗?
码无边 2011-08-25
  • 打赏
  • 举报
回复
这样不是仅仅判断是否有差集吗?根本不行啊!
calky 2011-08-25
  • 打赏
  • 举报
回复
select TIME_TO_SEC(datediff(date1,date2)) AS time from table
在php里面判断时间是否大于0就行
码无边 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zy205817 的回复:]

现在有一个问题就是关于区间;假如已有时间段,于自己添加的时间段的比较;是不是有4种情况呢?
1)添加数据和已有数据左边有交集。
2)添加数据和已有右边数据有交集。
3)添加数据和已有数据时被包含关系。
4)添加数据和已有数据时包含关系。
不知道自己描述的对不对!这是判断是否有交集的情况!可否根据这样的情况写sql语句。
PHP code
$sql = "select count(1……
[/Quote]但是这些条件你的sql是不是没有考虑齐全呢?
木目子 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zy205817 的回复:]

你的是加了一个Not还有就是那个括号,你的这个判断是否产生交集!
[/Quote]
starttime > '$etime' or endtime < '$stime'
这个意思是所有交集之外的,那么加not不就是交集了
码无边 2011-08-25
  • 打赏
  • 举报
回复
现在有一个问题就是关于区间;假如已有时间段,于自己添加的时间段的比较;是不是有4种情况呢?
1)添加数据和已有数据左边有交集。
2)添加数据和已有右边数据有交集。
3)添加数据和已有数据时被包含关系。
4)添加数据和已有数据时包含关系。
不知道自己描述的对不对!这是判断是否有交集的情况!可否根据这样的情况写sql语句。
$sql = "select count(1) from meeting where not(starttime > '$etime' or endtime < '$stime')";

这位仁兄的sql的条件我觉得不是很完整?大家是什么样的意见呢?
码无边 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xyl_ztj 的回复:]

打开串口设备
CommOpen(UCHAR ucChanNum)

struct termios m_Opt;CommInit(ucChanNum);

/* 打开串口 */
stCommParam[ucChanNum].iPort = open(stCommParam[ucChanNum].cPortName, O_RDWR | O_NOCTTY | O_N……
[/Quote]兄弟,你回答是什么啊!不要灌水啊!
码无边 2011-08-25
  • 打赏
  • 举报
回复
你的是加了一个Not还有就是那个括号,你的这个判断是否产生交集!
木目子 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zy205817 的回复:]

我觉得这个sql语句还是查询不严谨。这个sql该不该这样写呢?SELECT `OrderID`,`RoomID`,`UserID`,`DeptID`,`StartTime`,`EndTime`,`IsCancel`,`CancelTime`,`FstCreate`,`MeetTitle`,`DeptID_old` FROM MeetRoomOrder WHERE `StartTime`>'201……
[/Quote]

你看明白我写的SQL了吗?
not(starttime > '$etime' or endtime < '$stime')等于starttime > '$etime' or endtime < '$stime'吗??
xyl_ztj 2011-08-24
  • 打赏
  • 举报
回复
打开串口设备
CommOpen(UCHAR ucChanNum)

struct termios m_Opt;CommInit(ucChanNum);

/* 打开串口 */
stCommParam[ucChanNum].iPort = open(stCommParam[ucChanNum].cPortName, O_RDWR | O_NOCTTY | O_NDELAY );
if (-1 == stCommParam[ucChanNum].iPort)
{
DBG_COMM_PRINT(LP_ERR,"read iport %x fail\r\n", ucChanNum);
return CCU_ERR;
}
else
{
fcntl(stCommParam[ucChanNum].iPort, F_SETFL, FNDELAY);
}

if ( CCU_OK != tcgetattr(stCommParam[ucChanNum].iPort, &m_Opt) )
{
return CCU_ERR;
}

(VOID)cfsetispeed(&m_Opt, stCommParam[ucChanNum].iBaudRate);
(VOID)cfsetospeed(&m_Opt, stCommParam[ucChanNum].iBaudRate);

/*To disable software flow control simply mask those bits: */
m_Opt.c_iflag &= ~(IXON | IXOFF | IXANY);

/* 禁止接收转换回车、大小写 */
m_Opt.c_iflag &= ~(ICRNL | IUCLC);
/* 禁止奇偶校验 */
m_Opt.c_iflag &= ~INPCK;
/*Output Options*/
/* 设置数据位 */
m_Opt.c_cflag &= ~CSIZE;
m_Opt.c_cflag |= CS8;
/* 设置为奇效验*/
m_Opt.c_cflag |= (PARODD | PARENB);
/* 设置1个停止位 */
m_Opt.c_cflag &= ~CSTOPB;
/* 允许接收 */
m_Opt.c_cflag |= (CLOCAL | CREAD);
/* 禁止处理输出数据 */
m_Opt.c_oflag &= ~OPOST;

m_Opt.c_cc[VTIME] = 5;
m_Opt.c_cc[VMIN] = 0;

if (CCU_OK != tcsetattr(stCommParam[ucChanNum].iPort, TCSANOW, &m_Opt))
{
close(stCommParam[ucChanNum].iPort);
DBG_COMM_PRINT(LP_ERR,"set %x param fail\r\n", ucChanNum);
return CCU_ERR;
}
return CCU_OK;
码无边 2011-08-24
  • 打赏
  • 举报
回复
还是无法查询区间段数据。
码无边 2011-08-24
  • 打赏
  • 举报
回复
我觉得这个sql语句还是查询不严谨。这个sql该不该这样写呢?SELECT `OrderID`,`RoomID`,`UserID`,`DeptID`,`StartTime`,`EndTime`,`IsCancel`,`CancelTime`,`FstCreate`,`MeetTitle`,`DeptID_old` FROM MeetRoomOrder WHERE `StartTime`>'2011-8-26 17:55:18' OR `EndTime`<'2011-8-26 17:17:04' AND `IsCancel`=0 LIMIT 100
执行之后sql语句的条件完全没有匹配数据库。并且条件的限制太宽了。这样紧紧一个条件还是无法查询正确的。
xuzuning 2011-08-24
  • 打赏
  • 举报
回复
$where.=($where?' and':'')." StartTime>'$endtime' and EndTime<'$starttime'";
码无边 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xuzuning 的回复:]

数据库里是怎么放的?
[/Quote]

就是一个表里面有开始时间,结束时间。其他另外一些字段。
码无边 2011-08-24
  • 打赏
  • 举报
回复
if($starttime&&$endtime)
{
$where.=($where?' and':'').' StartTime>\''.$endtime.'\' or EndTime<\''.$starttime.'\'';
}
$rq=$mm->where($where)->select();

这样!
加载更多回复(8)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧