Hi,
I have a table called Bookings which has two important columns;
Booking_Start_D ate and Booking_End_Dat e. These columns are both of type
DATETIME. The following query calculates how many hours are available
between the hours of 09.00 and 17.30 so a user can see at a glance how many
hours they have unbooked on a particular day (i.e. 8.5 hours less the time
of any bookings on that day). However, when a booking spans more than one
day the query doesn't work, for example if a user has a booking that starts
on day one at 09.00 and ends at 14.30 on the next day, the query returns 3.5
hours for both days. Any help here would be greatly appreciated.
SELECT 8.5 - (SUM(((DATE_FOR MAT(B.Booking_E nd_Date, '%k') * 60 ) +
DATE_FORMAT(B.B ooking_End_Date , '%i')) - ((DATE_FORMAT(B .Booking_Start_ Date,
'%k') * 60 ) + DATE_FORMAT(B.B ooking_Start_Da te, '%i'))) / 60) AS
Available_Hours FROM WMS_Bookings B WHERE B.User_ID = '16' AND
B.Booking_Statu s <> '1' AND NOT ( '2003-10-07' <
DATE_FORMAT(Boo king_Start_Date , "%Y-%m-%d") OR '2003-10-07' >
DATE_FORMAT(Boo king_End_Date, "%Y-%m-%d") )
Thanks for your help
I have a table called Bookings which has two important columns;
Booking_Start_D ate and Booking_End_Dat e. These columns are both of type
DATETIME. The following query calculates how many hours are available
between the hours of 09.00 and 17.30 so a user can see at a glance how many
hours they have unbooked on a particular day (i.e. 8.5 hours less the time
of any bookings on that day). However, when a booking spans more than one
day the query doesn't work, for example if a user has a booking that starts
on day one at 09.00 and ends at 14.30 on the next day, the query returns 3.5
hours for both days. Any help here would be greatly appreciated.
SELECT 8.5 - (SUM(((DATE_FOR MAT(B.Booking_E nd_Date, '%k') * 60 ) +
DATE_FORMAT(B.B ooking_End_Date , '%i')) - ((DATE_FORMAT(B .Booking_Start_ Date,
'%k') * 60 ) + DATE_FORMAT(B.B ooking_Start_Da te, '%i'))) / 60) AS
Available_Hours FROM WMS_Bookings B WHERE B.User_ID = '16' AND
B.Booking_Statu s <> '1' AND NOT ( '2003-10-07' <
DATE_FORMAT(Boo king_Start_Date , "%Y-%m-%d") OR '2003-10-07' >
DATE_FORMAT(Boo king_End_Date, "%Y-%m-%d") )
Thanks for your help
Comment