Query Change?

For users or potential users.
Post Reply
atd
Posts: 404
Joined: Thu Mar 27, 2008 2:28 pm
Location: Minneapolis, MN

Query Change?

Post by atd » Mon Nov 22, 2010 1:09 pm

I'm not sure when this started happening, but all of my queries that have DATE_FORMAT or TIME_FORMAT are coming a back with "System.Byte[]" as the value in those columns. Any ideas?
I'm on version 7.4.12.

User avatar
jordansparks
Site Admin
Posts: 5744
Joined: Sun Jun 17, 2007 3:59 pm
Location: Salem, Oregon
Contact:

Re: Query Change?

Post by jordansparks » Mon Nov 29, 2010 8:25 pm

Yeah. CHAR(DATE_FORMAT())
Jordan Sparks, DMD
http://www.opendental.com

atd
Posts: 404
Joined: Thu Mar 27, 2008 2:28 pm
Location: Minneapolis, MN

Re: Query Change?

Post by atd » Tue Nov 30, 2010 8:56 am

Hmmm, that didn't work for me. I still get System.Byte[].

I'm trying to just show the appointment time in the column, not the date.
I used this for the column in my select statement:
TIME_FORMAT(apt.AptDateTime,'%h %i %p) as 'Time'

Changing it to this didn't help:
CHAR(TIME_FORMAT(apt.AptDateTime,'%h %i %p)) as 'Time'

User avatar
jordansparks
Site Admin
Posts: 5744
Joined: Sun Jun 17, 2007 3:59 pm
Location: Salem, Oregon
Contact:

Re: Query Change?

Post by jordansparks » Tue Nov 30, 2010 9:07 am

Sorry.
DATE(DATE_FORMAT())
Jordan Sparks, DMD
http://www.opendental.com

atd
Posts: 404
Joined: Thu Mar 27, 2008 2:28 pm
Location: Minneapolis, MN

Re: Query Change?

Post by atd » Tue Nov 30, 2010 9:19 am

But my query is for TIME_FORMAT, not DATE_FORMAT. I tried putting both DATE() and TIME() around it and neither gives me the result I want (although the System.Byte[] is gone).

User avatar
jsalmon
Posts: 1555
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Query Change?

Post by jsalmon » Tue Nov 30, 2010 12:36 pm

Typically the DATE() will fix the issue, but the TIME_FORMAT is a special case.
You might want to try something like this:

SELECT CAST(TIME_FORMAT(apt.AptDateTime, '%h %i %p') AS CHAR) AS 'Time'
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

atd
Posts: 404
Joined: Thu Mar 27, 2008 2:28 pm
Location: Minneapolis, MN

Re: Query Change?

Post by atd » Tue Nov 30, 2010 1:08 pm

That did it, thank you!

User avatar
Jorgebon
Posts: 502
Joined: Mon Jun 18, 2007 2:25 pm
Location: Mayaguez, PR
Contact:

Re: Query Change?

Post by Jorgebon » Wed Dec 01, 2010 4:41 am

I have the same problem but can't get it to work. Here's a query I used to make a list of patients not seen in five years. How would I need to change it to make it work?

SET @pos=0;
SELECT @pos:=@pos+1 as 'Number Of Patients', patient.LName,patient.FName, Date_Format(MAX(procedurelog.ProcDate),'%m/%d/%y') as 'Date Last Visit'
FROM patient,Procedurelog
WHERE procedurelog.PatNum=patient.PatNum
AND patient.BillingType = '40'
AND procedurelog.ProcStatus IN(2,3)
AND patient.PatStatus = '0'
GROUP BY procedurelog.PatNum
HAVING MAX(ProcDate) < '2006-01-01'
ORDER BY patient.Lname, patient.fname

Jorge Bonilla, DMD
Jorge Bonilla DMD
Open Dental user since May 2005

User avatar
Jorgebon
Posts: 502
Joined: Mon Jun 18, 2007 2:25 pm
Location: Mayaguez, PR
Contact:

Re: Query Change?

Post by Jorgebon » Wed Dec 01, 2010 4:50 am

OK, I got it now. It works.
Jorge Bonilla, DMD
Jorge Bonilla DMD
Open Dental user since May 2005

User avatar
B.Thomas
Posts: 160
Joined: Mon Jul 23, 2007 11:00 pm

Re: Query Change?

Post by B.Thomas » Wed Feb 09, 2011 9:51 am

How can the waiting room report (Query #244) be corrected and updated on the Query example page?

/*Waiting Room Report, shows time each patient arrived, length waiting, was seated,chair time and dismissed time.
also give average waiting time*/
SET @FromDate='2009-01-01' , @ToDate='2009-01-15';
DROP TABLE IF EXISTS tmp1;
CREATE TABLE tmp1 AS
SELECT CONCAT(p.LName,', ',p.FName) AS 'Pat Name', LEFT(a.PatNum,15) AS 'Pat Num', AptDateTime,
LEFT((CASE WHEN DATE_FORMAT(DateTimeArrived,'%T')<>'00:00:00'/*when there is a real value*/
THEN DATE_FORMAT(DateTimeArrived,'%r')
ELSE '' END),12) AS 'TimeArrived',
LEFT((CASE WHEN DATE_FORMAT(DateTimeSeated,'%T')<>'00:00:00'/*when there is a real value*/
THEN DATE_FORMAT(DateTimeSeated,'%r')
ELSE '' END),12) AS 'TimeSeated',
LEFT((CASE WHEN DATE_FORMAT(DateTimeDismissed,'%T')<>'00:00:00'/*when there is a real value*/
THEN DATE_FORMAT(DateTimeDismissed,'%r')
ELSE '' END),12) AS 'TimeDismiss',
LEFT((CASE WHEN DATE_FORMAT(DateTimeSeated,'%T')<>'00:00:00' AND DATE_FORMAT(DateTimeArrived,'%T')<>'00:00:00'
THEN TIME_FORMAT(SEC_TO_TIME(TIME_TO_SEC(DateTimeSeated)-TIME_TO_SEC(DateTimeArrived)),'%H:%i')
ELSE '' END),5) AS 'WaitTime',
LEFT((CASE WHEN DATE_FORMAT(DateTimeSeated,'%T')<>'00:00:00' AND DATE_FORMAT(DateTimeDismissed,'%T')<>'00:00:00'
THEN TIME_FORMAT(SEC_TO_TIME(TIME_TO_SEC(DateTimeDismissed)-TIME_TO_SEC(DateTimeSeated)),'%H:%i')
ELSE '' END),5) AS 'ChairTime'
FROM Appointment a INNER JOIN patient p ON a.PatNum=p.PatNum
WHERE DATE(a.AptDateTime) BETWEEN @FromDate AND @ToDate
ORDER BY a.AptDateTime;
SELECT * FROM tmp1
UNION
SELECT 'Average Wait' AS 'Pat Name', '' AS 'Pat Num','' AS 'AptDateTime', '' AS TimeArrived, '' AS TimeSeated,'' AS TimeDismiss,
FORMAT((SELECT((SUM(TIME_TO_SEC(tmp1.WaitTime))/COUNT(tmp1.WaitTime))/60) FROM tmp1 WHERE tmp1.WaitTime<>''),1) AS WaitTime,
'' AS ChairTime;

Post Reply