Sql 与“冲突”;00:00:00“;作为结束时间
我有一个疑问:Sql 与“冲突”;00:00:00“;作为结束时间,sql,codeigniter,time,between,Sql,Codeigniter,Time,Between,我有一个疑问: SELECT `s`.`time` , SUM( s.love ) AS total_love, SUM( s.sad ) AS total_sad, SUM( s.angry ) AS total_angry, SUM( s.happy ) AS total_happy FROM (`employee_workshift` AS e) JOIN `workshift` AS w ON `e`.`workshift_uuid` = `w`.`uuid` JOIN `shift_s
SELECT `s`.`time` , SUM( s.love ) AS total_love, SUM( s.sad ) AS total_sad, SUM( s.angry ) AS total_angry, SUM( s.happy ) AS total_happy
FROM (`employee_workshift` AS e)
JOIN `workshift` AS w ON `e`.`workshift_uuid` = `w`.`uuid`
JOIN `shift_summary` AS s ON `w`.`uuid` = `s`.`workshift_uuid`
WHERE `s`.`location_uuid` = '81956feb-3fd7-0e84-e9fe-b640434dfad0'
AND `e`.`employee_uuid` = '3866a979-bc5e-56cb-cede-863afc47b8b5'
AND `s`.`workshift_uuid` = '8c9dbd85-18a3-6ca9-e3f3-06eb602b6f38'
AND `s`.`time` >= CAST( '18:00:00' AS TIME )
AND `s`.`time` <= CAST( '00:00:00' AS TIME )
AND `s`.`date` LIKE '%2014-03%'
那我就把它们都比较一下。但这需要大量的线和努力,而不仅仅是简单地使用“中间”。还是应该使用“in_数组”?你遇到过这个吗?我希望有人能帮忙。谢谢。19:00肯定比00:00大-所以你的方法不应该起作用
尝试使用完整的时间戳(包括日期)获取所需的所有数据。尝试使用此查询。我不知道您的数据结构,所以请检查
s
和s1
表之间的internaljoin
。连接必须是一行对一行-仅日期不同。s1行的日期必须早于s表行的1天
SELECT s.time , SUM( s.love ) AS total_love, SUM( s.sad ) AS total_sad, SUM( s.angry ) AS total_angry, SUM( s.happy ) AS total_happy
FROM (employee_workshift AS e)
JOIN workshift AS w ON e.workshift_uuid = w.uuid
JOIN shift_summary AS s ON w.uuid = s.workshift_uuid
JOIN shift_summary AS s1 ON (w.uuid = s.workshift_uuid AND CAST(s.date as DATE)=CAST(s1.date as DATE)+1)
WHERE s.location_uuid = '81956feb-3fd7-0e84-e9fe-b640434dfad0'
AND e.employee_uuid = '3866a979-bc5e-56cb-cede-863afc47b8b5'
AND s.workshift_uuid = '8c9dbd85-18a3-6ca9-e3f3-06eb602b6f38'
AND s1.time >= CAST( '18:00:00' AS TIME )
AND s.time <= CAST( '00:00:00' AS TIME )
AND s.date LIKE '%2014-03%'
选择s.time,SUM(s.love)作为total_love,SUM(s.sad)作为total_sad,SUM(s.angry)作为total_angle,SUM(s.happy)作为total_happy
从(员工_工作班次为e)
在e.workshift_uuid=w.uuid上以w的形式连接工作班次
在w.uuid=s.workshift\u uuid上将轮班汇总加入为s
将轮班汇总作为s1加入(w.uuid=s.WORKSHIND和CAST(s.date AS date)=CAST(s1.date AS date)+1)
其中s.location_uuid='81956feb-3fd7-0e84-e9fe-b640434dfad0'
而e.employee_uuid='3866a979-bc5e-56cb-cede-863afc47b8b5'
和s.workshift_uuid='8c9dbd85-18a3-6ca9-e3f3-06eb602b6f38'
和s1.time>=CAST('18:00:00'作为时间)
谢谢你,杰希。我会试试看。我一得到结果就给你回电话。谢谢你@MikkaRin。我会试试看。我一得到结果就给你回电话。
SELECT s.time , SUM( s.love ) AS total_love, SUM( s.sad ) AS total_sad, SUM( s.angry ) AS total_angry, SUM( s.happy ) AS total_happy
FROM (employee_workshift AS e)
JOIN workshift AS w ON e.workshift_uuid = w.uuid
JOIN shift_summary AS s ON w.uuid = s.workshift_uuid
JOIN shift_summary AS s1 ON (w.uuid = s.workshift_uuid AND CAST(s.date as DATE)=CAST(s1.date as DATE)+1)
WHERE s.location_uuid = '81956feb-3fd7-0e84-e9fe-b640434dfad0'
AND e.employee_uuid = '3866a979-bc5e-56cb-cede-863afc47b8b5'
AND s.workshift_uuid = '8c9dbd85-18a3-6ca9-e3f3-06eb602b6f38'
AND s1.time >= CAST( '18:00:00' AS TIME )
AND s.time <= CAST( '00:00:00' AS TIME )
AND s.date LIKE '%2014-03%'