• Модуль: 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);
}