Функция SQL Server FLOOR()
В SQL Server функция FLOOR() возвращает ближайшее целое число, которое меньше или равно указанному числу или числовому выражению.
Функция FLOOR() в основном используется для округления значения с плавающей запятой без дробной части от значения числа с плавающей запятой (десятичное, двойное, плавающее).
ЭТАЖ(номер)
Параметры
номер: Допустимое числовое выражение. Недопустимое значение битового типа.
Возвращаемое значение
Возвращает тот же тип, что и входное выражение.
Пример 1:
В следующем примере используется функция FLOOR() для положительного и отрицательного числового значения.
ВЫБЕРИТЕ ЭТАЖ (23,34) КАК PosInt, ЭТАЖ (-23,34) КАК NegInt;
В приведенном выше примере FLOOR(23.34) возвращает 23, поскольку это ближайшее и наименьшее целочисленное значение, чем 23,34.
ЭТАЖ(-23,34) возвращает -24, поскольку -24 меньше -23,34.Пример 2:
В следующем примере ноль и ввод меньше единицы передаются в качестве параметров функции FLOOR.
ВЫБЕРИТЕ ЭТАЖ (0,01) КАК PosInt, ЭТАЖ (0,00) КАК Результат;
Пример 3:
Вы можете передать числовое выражение, как показано ниже.
ВЫБЕРИТЕ ЭТАЖ(1,6 * 2) КАК Результат;
Пример 4:
Следующий пример демонстрирует разницу между функциями FLOOR() и CEILING() .
ВЫБРАТЬ ЭТАЖ(23.34) AS FloorResult, CEILING(23.34) AS CeilingResult;
В следующей таблице перечислены различия между функциями CEILING() и FLOOR() для разных входных значений:
| Входное значение | ПОТОЛОК() | ПОЛ() |
|---|---|---|
| 12,0 | 12 | 12 |
12. 2 | 13 | 12 |
| 12,5 | 13 | 12 |
| 12.12345 | 13 | 12 |
| -12,0 | -12 | -12 |
| -12,2 | -12 | -13 |
| -12,5 | -12 | -13 |
Запуск теста SQL Server
sql server — полные даты SQL до первого числа месяца
спросил
Изменено 2 года, 11 месяцев назад
Просмотрено 551 раз
У меня есть даты в следующем формате:
2019-09-01 00:00:00.000 2019-09-02 00:00:00.000 2019-10-22 00:00:00.000
2019-09-01 00:00:00.000 2019-09-01 00:00:00.000 2019-10-01 00:00:00.000
Как я могу сделать это в операторе select? Я пробовал DATEPART , но могу извлечь только номер месяца.
- SQL-Server
- Дата
Другой вариант: Используйте DateFromparts :
Выберите DateFromparts (год (DateColumn), месяц (DateColumn), 1). ОТ ИмяТаблицы;
Я предпочитаю этот вариант подходу EOMonth() , предложенному в ответе gvee, просто потому, что он более удобочитаем и не требует вычислений даты.
EOMonth() твой друг!
ВЫБРАТЬ '2019-10-22 00:00:00.000' КАК исходное_значение
, EOMonth('2019-10-22 00:00:00.000') AS end_of_month
, DateAdd(dd, 1, EOMonth('2019-10-22 00:00:00.000')) AS start_of_next_month
, DateAdd(mm, -1, DateAdd(dd, 1, EOMonth('2019-10-22 00:00:00.
000'))) AS start_of_this_month
;
Чтобы сохранить тот же формат даты и времени, вы можете использовать DATEADD(month, DATEDIFF(month, 0, your_date_column), 0)
Этот метод подсчитывает количество месяцев с 0-го дня (01.01.1900) до исходной даты, затем добавляет это количество месяцев до 0-го дня, что возвращает начало месяца
5В SQL нет прямой функции для нахождения первого дня месяца, но можно использовать функцию LAST_DAY() для его вычисления, выполнив следующие действия: Сначала получите последний день месяца даты. Во-вторых, добавьте 1 день, чтобы получить первый день следующего месяца, используя функцию DATE_ADD(). В-третьих, вычтите 1 месяц, чтобы получить первый день месяца даты. Наконец, отформатируйте рассчитанную дату в формате гггг-мм-дд ЧЧ:мм:сс по мере необходимости
Следующий запрос показывает, как получить первый день месяца 2017-07-14.
ВЫБЕРИТЕ DATE_FORMAT(DATE_ADD(DATE_ADD(LAST_DAY('2017-07-14'),
ИНТЕРВАЛ 1 ДЕНЬ),
ИНТЕРВАЛ - 1 МЕСЯЦ),
"%Y-%m-%d %T") AS first_day;
Я использовал следующие ссылки, чтобы написать ответ.

2
000
2019-09-02 00:00:00.000
2019-10-22 00:00:00.000
