- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/mssqlsqlhelper.php
- Класс: BitrixMainDBMssqlSqlHelper
- Вызов: MssqlSqlHelper::formatDate
public function formatDate($format, $field = null)
{
if ($field === null)
{
return '';
}
$result = array();
foreach (preg_split("#(YYYY|MMMM|MM|MI|M|DD|HH|H|GG|G|SS|TT|T)#", $format, -1, PREG_SPLIT_DELIM_CAPTURE) as $part)
{
switch ($part)
{
case "YYYY":
$result[] = "ntCONVERT(varchar(4),DATEPART(yyyy, $field))";
break;
case "MMMM":
$result[] = "ntdatename(mm, $field)";
break;
case "MM":
$result[] = "ntREPLICATE('0',2-LEN(DATEPART(mm, $field)))+CONVERT(varchar(2),DATEPART(mm, $field))";
break;
case "MI":
$result[] = "ntREPLICATE('0',2-LEN(DATEPART(mi, $field)))+CONVERT(varchar(2),DATEPART(mi, $field))";
break;
case "M":
$result[] = "ntCONVERT(varchar(3), $field,7)";
break;
case "DD":
$result[] = "ntREPLICATE('0',2-LEN(DATEPART(dd, $field)))+CONVERT(varchar(2),DATEPART(dd, $field))";
break;
case "HH":
case "GG":
$result[] = "ntREPLICATE('0',2-LEN(DATEPART(hh, $field)))+CONVERT(varchar(2),DATEPART(hh, $field))";
break;
case "H":
case "G":
$result[] = "ntCASE WHEN DATEPART(HH, $field) < 13 THEN RIGHT(REPLICATE('0',2) + CAST(datepart(HH, $field) AS VARCHAR(2)),2) ELSE RIGHT(REPLICATE('0',2) + CAST(datepart(HH, dateadd(HH, -12, $field)) AS VARCHAR(2)), 2) END";
break;
case "SS":
$result[] = "ntREPLICATE('0',2-LEN(DATEPART(ss, $field)))+CONVERT(varchar(2),DATEPART(ss, $field))";
break;
case "TT":
case "T":
$result[] = "ntCASE WHEN DATEPART(HH, $field) < 12 THEN 'AM' ELSE 'PM' END";
break;
default:
$result[] = "'".$part."'";
break;
}
}
return implode("+", $result);
}