У меня проблема, когда, я думаю, существует пара решений.MSSQL datetime datetime в php
сценарий Я построил эту интрасети, где внутренние рабочие показатели KPI видны для офиса. Данные извлекаются из базы данных MSSQL и отображаются на веб-странице в сочетании с PHP, чем данные, и преобразуются в массив, поэтому API диаграммы Google может создавать красивые диаграммы. До сих пор так хорошо!
проблема У меня есть диаграмма, на которой показаны созданные билеты за последние 7 дней (в обратном порядке). Количество билетов создается по счету MSSQL, по одному числу на каждый день (сегодня - 7).
Но в некоторые дни билеты не создаются, как праздник или воскресенье. То, где все идет не так.
Сегодня четверг, и это показывает:
Day Amount
Thursday 25
Friday 10
Monday 30 (etc)
Tuesday 15 (day before)
Wednesday 20 (yesterday)
Thursday 50 (today)
вместо
Saturday 0
Sunday 0
Monday 30
Tuesday 15
Wednesday 20
Thursday 50
Проблема заключается в том, что есть нет записей (билеты) с создания современных на субботу или воскресенье, поэтому MSSQL cant посчитайте их.
PHP вычисляет даты (также сегодня -7), которые показаны под осью в моей диаграмме, но PHP включает Saterday и Sunday, поэтому названия осей не являются представлениями для данных, которые показывает ось.
Возможное решение Одним из решений является то, что каким-то образом MSSQL показывает Saterday и Sunday в таблице результатов. Но я не думаю, что это возможно, потому что записей просто нет.
Другое решение Получить DateTime, используемый в запросе MSSQL и разобрать их на мой intranetpage так диаграммы Google может отображать эти даты вместо PHP созданы даты. Но чем я получаю ошибку «Преобразовать datetime class в строку».
Поскольку datetime в MSSQL является типом datetime, а не типом varchar. После многих попыток поиска и поиска еще в google и stackoverflow, я могу succesfull конвертировать datetime в varchar. Но чем часть, где я беру сегодняшнюю дату и возвращаюсь на 7 дней, больше не работает.
Мой PHP (и запрос) выглядят следующим образом:
$sql = "
SELECT top 7
CAST(bb_casestartingtime AS DATE) AS DATE, COUNT(*) as TotalRows
FROM
CRM_MSCRM.dbo.FilteredIncident
WHERE
bb_casestartingtime > (CONVERT(date, GETDATE() - 7))
GROUP BY CAST(bb_casestartingtime AS DATE)
Order by date
";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false) {die(print_r(sqlsrv_errors(), true));}
$x=5;
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{ **$dateValue = date("Y-m-d", strtotime(" -$x day"));**
echo "[',".$row[**date**].$row['TotalRows'].",],";
$x--;
}
Я сломал два куска кода в два раза, но на самом деле они
В таблице (по крайней мере, интересная часть):
case id bb_casestartingtime
01 2016-11-10 15:30:45.000
02 2016-11-10 16:22:10.000
03 2016-11-09 15:02:15.000
Я подсчитываю количество вхождений по дате (bb_casestartingtime) в общей сложности. Так что сегодня у меня есть сегодня 2 записи вчера 1 запись
Acutal Вопрос может кто-нибудь помочь мне extraced даты и времени, которое используется в запросе?
Я использую только один стол под названием: FilteredIncident Есть ли способ, чтобы преобразовать DateTime bb_casestartingtime к VARCHAR (так PHP может извлечь его), но до сих пор подсчитывают количество вхождений в день?
Если требуется какая-либо информация, пожалуйста, обращайтесь
Спасибо заранее!
(я переписал весь мой вопрос, потому что я написал первое сообщение в спешке)
Спасибо, первое, что я попробую завтра, я больше не работаю прямо сейчас, но спасибо за ваш ответ.Я дам вам знать, если это сработает. – Stage