powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про целочисленное деление
6 сообщений из 6, страница 1 из 1
Вопрос про целочисленное деление
    #40105030
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть исходные данные.
SQL. Исходные данные
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @Table1 TABLE(	
	SKU VARCHAR(10),
	Дата INTEGER
);

INSERT INTO @Table1 
	(SKU, Дата)
VALUES
	('SKU 1', 202001),
	('SKU 2', 202002),
	('SKU 3', 202007),
	('SKU 4', 202008);


Нужно получить год и месяц.
SQL. Вариант 1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
	SKU,
	Дата,
	--CAST(SUBSTRING(CAST(Дата AS VARCHAR), 1, 4) AS INTEGER) AS Год,
	SUBSTRING(CAST(Дата AS VARCHAR), 1, 4) * 1 AS Год, 
	--CAST(SUBSTRING(CAST(Дата AS VARCHAR), 5, 2) AS INTEGER) AS Месяц	
	SUBSTRING(CAST(Дата AS VARCHAR), 5, 2) * 1 AS Месяц	
FROM
	@Table1;

Результат корректный.

SQL. Вариант 2
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
	SKU,
	Дата,
	Дата / 100 AS Год, 
	Дата % 1000 AS Месяц
FROM
	@Table1;

Запрос короче и результат тоже корректный.

Скажите, во втором варианте насколько корректно и аккуратно оставлять такую запись
Код: sql
1.
Дата / 100 AS Год

Всегда ли тут будет целое число? И вообще, всегда ли в SQL при делении целого на целое получаем целое число?
...
Рейтинг: 0 / 0
Вопрос про целочисленное деление
    #40105043
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
всегда ли в SQL при делении целого на целое получаем целое число?
Всегда.

"Если оператор сочетает выражения операндов с одинаковым типом данных, результат операции будет иметь тот же тип данных."

Приоритет типов данных
...
Рейтинг: 0 / 0
Вопрос про целочисленное деление
    #40105044
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

Спасибо!
...
Рейтинг: 0 / 0
Вопрос про целочисленное деление
    #40105045
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только вот дополнительно надо учесть, если добавить в исходные данные следующие строки:
Код: sql
1.
2.
,('SKU 5', null)
,('SKU 6', 0)

то в поле "Месяц" вернет соответственно построчно Null и 0.
...
Рейтинг: 0 / 0
Вопрос про целочисленное деление
    #40105131
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер, имхую, вы бомбите таким количество вопросов, что надо бы просить модератора создать отдельную тему: фак ferzmikk
Так было бы и вам удобнее искать ответы, не в документации рыться же, как нам, ткскыть
...
Рейтинг: 0 / 0
Вопрос про целочисленное деление
    #40105277
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
	SKU,
	Дата,
	Дата / 100 AS Год, 
	Дата % 1000 AS Месяц
FROM
	@Table1;

Ошибка. Надо было так написать:
Код: sql
1.
Дата % 100 AS Месяц
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про целочисленное деление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]