Наиболее часто используемые функции в SQL Server 2005/2008

Время чтения - 5 мин.Дата публикации 13.03.2023 (обновлено 21.05.2026)

Функции даты и времени в SQL Server

Коллеги, привет! Работа с датами — это классика. Чуть ли не в каждом проекте нужно что-то посчитать: «когда был последний вход», «сколько дней просрочки» или «собрать отчет за месяц». Давайте разберем функции, которые реально выручают. Без воды, только практика.

GETDATE()

Самая базовая штука — GETDATE(). Просто вызываешь, и она возвращает текущие дату и время с сервера. Никаких параметров, никакой магии.

Пример:

DECLARE @Date DATETIME
SET @Date = GETDATE()
PRINT @Date

Результат:

мар 13 2023  7:37PM
Время выполнения: 2023-03-13T19:37:55.6954185+03:00

DATEADD()

Надо прибавить или отнять дни, часы, минуты? Используй DATEADD(). Синтаксис простой: DATEADD(datepart, number, date).

Например, нужно узнать, какая дата будет через 5 дней от сегодня:

DECLARE @Date DATETIME = GETDATE()
PRINT @Date  -- Текущая дата
SELECT DATEADD(day, 5, @Date) AS NewTime

Результат:

2023-03-18 19:42:03.813

DATEPART()

Когда нужно вытащить только год, месяц или час — DATEPART() твой выбор.

-- Получить только год
SELECT DATEPART(year, GETDATE()) AS 'Год'
-- Получить только месяц
SELECT DATEPART(month, GETDATE()) AS 'Месяц'
-- Получить только часы
SELECT DATEPART(hour, GETDATE()) AS 'Часы'

Результат:

Год
2023

Месяц
3

Часы
19

DATEDIFF()

DATEDIFF() — вещь, без которой никуда. Считает разницу между двумя датами. Синтаксис: DATEDIFF(datepart, startdate, enddate).

Допустим, нужно посмотреть, сколько дней осталось до дедлайна:

DECLARE @Date1 DATETIME = GETDATE()
DECLARE @Date2 DATETIME = DATEADD(day, 5, @Date1)

SELECT DATEDIFF(day, @Date1, @Date2) AS 'Разница в днях'

Результат:

Разница в днях
5

DATENAME()

Хочешь получить название дня недели или месяца, а не цифру? DATENAME() — то что надо.

-- Получить сегодняшний день
SELECT DATENAME(dw, getdate()) AS 'Сегодня'
-- Получить сегодняшний месяц
SELECT DATENAME(month, getdate()) AS 'Месяц'

Результат:

Сегодня
Понедельник

Месяц
Март

DAY(), MONTH(), YEAR()

Три простых функции-помощника: DAY(), MONTH(), YEAR(). Вытаскивают соответствующую часть из даты.

SELECT DAY(getdate()) AS 'День'
SELECT MONTH(getdate()) AS 'Месяц'
SELECT YEAR(getdate()) AS 'Год'

Результат:

День
13

Месяц
3

Год
2023

Строковые функции

Со строками тоже часто приходится работать. Иногда нужно почистить данные, иногда — разобрать на части. Пройдемся по самым полезным.

ASCII()

ASCII() возвращает числовой код первого символа строки. Синтаксис: ASCII(character_expression).

Полезно, когда нужно проверить, что за символ попал в данные (например, невидимый пробел или табуляция).

SELECT ASCII('A')  -- Вернет 65

CHAR()

CHAR() — обратная функция. Преобразует код ASCII обратно в символ. Синтаксис: CHAR(integer_expression).

SELECT CHAR(65)  -- Вернет 'A'

LEFT() и RIGHT()

Вытаскиваем символы слева или справа. Синтаксис: LEFT(string, length) и RIGHT(string, length).

Например, нужно взять первые 3 символа кода товара:

SELECT LEFT('ABC-12345', 3)  -- Вернет 'ABC'
SELECT RIGHT('ABC-12345', 5) -- Вернет '12345'

LTRIM() и RTRIM()

Обрезаем лишние пробелы слева (LTRIM) и справа (RTRIM).

SELECT LTRIM('   Hello')  -- 'Hello'
SELECT RTRIM('Hello   ')  -- 'Hello'

REPLACE()

Меняем одну подстроку на другую. Синтаксис: REPLACE(string, find, replace).

Часто юзаю, чтобы починить кривые данные, например, заменить "г." на "город":

SELECT REPLACE('г. Москва', 'г.', 'город')  -- Вернет 'город Москва'

CHARINDEX()

Ищет первое вхождение подстроки. Синтаксис: CHARINDEX(expression1, expression2 [, start_location]).

SELECT CHARINDEX('SQL', 'Microsoft SQL Server')  -- Вернет 11

PATINDEX()

Похож на CHARINDEX, но можно использовать шаблоны (подстановочные знаки).

SELECT PATINDEX('%[b,B]read%', 'Tommy loves Bread')  -- Вернет 13

LEN()

Длина строки. Просто и понятно.

SELECT LEN('Hello world')  -- Вернет 11

STUFF()

Удаляет кусок строки и вставляет на его место другой. Синтаксис: STUFF(character_expression1, start, length, character_expression2).

Например, нужно заменить слово "SERVICES" на "DATABASE" в строке "SQL SERVICES is USEFUL":

SELECT STUFF('SQL SERVICES is USEFUL', 5, 8, 'DATABASE')  -- Вернет 'SQL DATABASE is USEFUL'

SUBSTRING()

Вырезает часть строки. Синтаксис: SUBSTRING(expression, start, length).

SELECT SUBSTRING('abcdefgh', 2, 3)  -- Вернет 'bcd'

LOWER() и UPPER()

Меняем регистр.

SELECT UPPER('this is Lower TEXT')  -- 'THIS IS LOWER TEXT'
SELECT LOWER('THIS IS UPPER TEXT')  -- 'this is upper text'

Полезные мелочи

Еще пара функций, которые могут пригодиться в повседневной работе.

NCHAR()

Возвращает символ Юникода по его коду.

SELECT NCHAR(97)  -- Вернет 'a'

DIFFERENCE()

Сравнивает два слова по звучанию (через SOUNDEX). Возвращает число от 0 до 4. Чем выше число, тем больше похожи слова.

SELECT DIFFERENCE('Green', 'Greene')  -- Вернет 4

QUOTENAME()

Добавляет к строке кавычки или скобки, чтобы сделать из нее валидный идентификатор SQL Server.

SELECT QUOTENAME('abc[]def')  -- Вернет '[abc[]]def]'

REVERSE()

Переворачивает строку задом наперед.

SELECT REVERSE('namazzufuraM .dM')  -- Вернет 'Md. Marufuzzaman'
Насколько полезной была статья?

Что еще посмотреть по SQL Server

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK