Oracle обрезать время у даты
The Oracle TO_CHAR() function converts a DATE or INTERVAL value to a string in a specified date format.
The Oracle TO_CHAR() function is very useful for formatting the internal date data returned by a query in a specific date format.
Return value
The Oracle TO_CHAR() function returns a string represented a DATE or INTERVAL value in a specified format.
Ответы 3
Если вам нужно фактическое время (а не только часы и минуты), вы можете:
Если вам нужны только часы и минуты:
Если вы хотите, чтобы время суток (часы, минуты и секунды) выражалось в дробных часах, вы можете использовать
как уже показал Гордон.
Если вы хотите усечь секунды и просто преобразовать час и минуту в часы, вы можете использовать
Мы можем использовать функциональность extract() , чтобы получить часы и минуты. Обратите внимание, что для этого требуется преобразование дат в тип данных timestamp (или использование systimestamp в вашем примере).
Как только у вас появятся часы и минуты, вы можете их вычислить и отформатировать в соответствии с вашими потребностями. Например:
Округление - это не совсем то, что делал OP. TO_CHAR(. 'HH24:MI') усекает, а не округляет.
Syntax
The following shows the syntax of the Oracle TRUNC() function:
B) Format an interval example
This example uses the TO_CHAR() function to format an interval:
Here is the output:
A) Convert current system date
The following statement converts the current system date to a string with the format YYYY-MM-DD :
To convert the current system date to a long date string, you use the DL date format as follows:
Here is the result:
To display the names of day and month in another language e.g., French, you use the nlsparam argument as follows:
The result is in French:
In this tutorial, you have learned how to use the Oracle TO_CHAR() function to convert a DATE or INTERVAL value to a string in a specified format.
каков наилучший способ усечения значения datetime (для удаления часов минут и секунд) в SQL Server 2008?
Это продолжает часто собирать дополнительные голоса, даже несколько лет спустя, и поэтому мне нужно обновить его для современных версий Sql Server. Для Sql Server 2008 и более поздних версий это просто:
обратите внимание, что последние три абзаца внизу все еще применяются, и вам часто нужно сделать шаг назад и найти способ избежать броска в первую очередь.
но есть и другие способы сделать это. Вот самые общий.
правильный способ (новый с Sql Server 2008):
правильный путь (старый):
теперь это старше, но это все еще стоит знать, потому что он также может легко адаптироваться к другим временным точкам, таким как первый момент месяца, минуты, часа или года.
этот правильный способ использует документированные функции, которые являются частью стандарта ansi и гарантированно работают, но это может быть несколько замедлившийся. Он работает, находя, сколько дней есть от дня 0 до текущего дня, и добавляя, что много дней назад в день 0. Он будет работать независимо от того, как хранится ваше datetime и независимо от вашей локали.
быстрый способ:
имейте в виду, что это зависит от детали реализации Microsoft может свободно меняться в любое время, даже в автоматическом обновлении службы. Это не очень портативный. На практике очень маловероятно, что эта реализация изменится в ближайшее время, но все равно важно осознавать опасность, если вы решите ее использовать. И теперь, когда у нас есть возможность выбрать дату, это редко необходимый.
неправильно:
неправильный способ работает путем преобразования в строку, усечения строки и преобразования обратно в datetime. Это неправильно, по двум причинам: 1)это может не работать во всех локалях и 2) это о самом медленном возможном способе сделать это. и не просто мало, это все равно на порядок или два медленнее, чем другие варианты.
обновление это было в последнее время я получаю несколько голосов, и поэтому я хочу добавить к нему, что с тех пор, как я опубликовал это, я видел довольно веские доказательства того, что Sql Server оптимизирует разницу в производительности между "правильным" способом и "быстрым" способом, то есть теперь вы должны поддержать первый.
в любом случае, вы хотите пишите ваши запросы, чтобы избежать необходимости делать это в первую очередь. Очень редко вы должны делать эту работу над базой данных.
в большинстве мест база данных уже является вашим узким местом. Это, как правило, сервер, который является самым дорогим для добавления оборудования для повышения производительности и труднее всего получить эти дополнения правильно (вы должны сбалансировать диски с памятью, например). Это также труднее всего масштабировать наружу, как технически, так и с точки зрения бизнеса; гораздо проще технически добавить веб-сервер или сервер приложений, чем сервер баз данных, и даже если это было ложно, вы не платите $20,000+ за серверную лицензию для IIS или апаш.
Я пытаюсь сказать, что, когда это возможно, вы должны делать эту работу на уровне приложения. The только время, когда вы должны когда-либо найти усечение datetime на Sql Server, когда вам нужно группировать по дням, и даже тогда вы, вероятно, должны иметь дополнительный столбец, настроенный как вычисляемый столбец, поддерживаемый во время вставки/обновления или поддерживаемый в логике приложения. Получите эту индексную, cpu-тяжелую работу с вашей базой данных.
В посте рассматриваются функции ROUND, TRUNC и MOD относящиеся к функциям по работе с числовыми данными.
Существенным отличием между числовыми и другими функциями является то, что они принимают и возвращают только числовые данные. Oracle предоставляет числовые функции для решения тригонометрических, степенных и логарифмических задач. Ниже рассматриваются три однострочные числовые функции – ROUND, TRUNC и MOD:
Функция ROUND выполняет операцию округления числового значения на основе указанной десятичной точности. Возвращаемое значение округляется в большую или меньшую сторону в зависимости от числового значения значащей цифры в позиции, задаваемой десятичной точностью. Если заданная десятичная точность равна n, то значимая для округления позиция является: (n + 1)-я относительно десятичной запятой (точки) вправо для n>=0 и (0-n)-я относительно десятичной запятой (точки) влево для n
ROUND (числовое значение, (десятичная точность)),
Описания десятичной точности
Десятичная точность | Десятичная позиция |
-4 | десятки тысяч (n*10000) |
-3 | тысячи (n * 1000) |
-2 | сотни (n * 100) |
-1 | десятки (n * 10) |
0 | единицы (n * 1) |
1 | десятых (n ÷ 10) |
2 | сотых (n ÷ 100) |
3 | тысячных (n ÷ 1000) |
4 | десятитысячных (n ÷ 10000) |
Примеры использования функции ROUND:
Если для примера выше опустить значение десятичной точности 0, то получается идентичный результат. При отсутствии десятичной точности, функция ROUND обрабатывает целую часть числа, как это было бы с десятичной точностью равной 0:
Функция TRUNC выполняет операцию усечения числового значения на основе указанной десятичной точности. Числовое усечение отличается от округления тем, что результирующее значение отбрасывает числовые знаки с позиции (n+1)-й вправо от десятичной запятой (точки) указанной десятичной точности n, если десятичная точность положительна или равна нулю. Если заданная десятичная точность n отрицательна, в исходном числе проставляются значащие нули до (0-n)-й десятичной позиции включительно влево от десятичной запятой (точки). Синтаксис функции:
TRUNC (числовое значение, (десятичная точность)).
Примеры использования функции TRUNC:
При отсутствии десятичной точности, функция TRUNC обрабатывает целую часть числа, как это было бы с десятичной точностью равной нулю:
Функция MOD возвращает числовой остаток от операции деления. Функция MOD выполняет операцию модульного деления. Ее синтаксис:
Я также попробовал функцию EXTRACT, затем суммировал часы и минуты, но все еще не работал.
Значит, вам не нужны часы а также минут, вы хотите часы (включая дробные части часов), верно? А формат 13.50 нужен или хватит 13.5 ?
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Return value
The TRUNC() function returns a DATE value truncated to a specified unit.
Другие вопросы по теме
Examples
Похожие вопросы
Суммирование значений из 2-й таблицы на основе идентификатора 1-й таблицы и вставка значений в первую таблицу
Находите ответы на сложные технические вопросы по программированию, с которыми сталкиваются инженеры по всему миру в своей ежедневной практике на сайте RedDeveloper.
The Oracle TRUNC() function returns a DATE value truncated to a specified unit.
Arguments
The TRUNC() function accepts two arguments:
1) date
The date argument is a DATE value or an expression that evaluates to a DATE value that will be truncated.
2) format
The format argument determines the unit to which the date will be truncated.
The format argument is optional. Its default value is DD that instructs the TRUNC() function to truncate the date to midnight.
The following table illustrates valid values for the format argument:
Format | Description |
---|---|
CC, SCC | Century, with or without minus sign (BC) |
[S]YYYY, [S]YEAR, YYY, YY, Y | Year (in various appearances) |
IYYY, IYY, IY, I | ISO year |
Q | Quarter |
MONTH, MON, MM, RM | Month (full name, abbreviated name, numeric, Roman numerals) |
IW, WW (ISO) | week number |
W | Day of the week |
DDD, DD, J | Day (of the year/of the month/Julian day) |
DAY, DY, D | Closest Sunday |
HH, HH12, HH24 | Hours |
MI | Minutes |
Syntax
The following illustrates the syntax of the TO_CHAR() function:
Examples
Let’s look at some examples of using the Oracle TRUNC() function.
A) Truncate a date value using default format
Consider the following date time value:
The following statement truncates the date value to midnight:
In this example,
- First, the TO_DATE() function converted a date string to a DATE value.
- Second, the TRUNC() function truncated the date. Because we did not pass the format argument, the TRUNC() function uses the default value that truncates the date to midnight.
- Third, the TO_CHAR() function formatted the result of the TRUNC() function.
B) Get the first day of the month of a date
The following statement returns the first day of the current month.
If you want to return the first day of the month of a specific date, you just need to use that date instead of the SYSDATE
C) Get the first day of the quarter of a date
Similarly, you can get the first day of the current quarter:
In this example, we replaced the month ( MM ) by quarter ( Q ).
In this tutorial, you have learned how to use the Oracle TRUNC() function to truncates a date value to a specified unit.
Arguments
The Oracle TO_CHAR() accepts three arguments:
1) expr
The expr is a DATE or an INTERVAL value that should be converted.
The data type of expr can be DATE , TIMESTAMP , TIMESTAMP WITH TIME ZONE , or TIMESTAMP WITH LOCAL TIME ZONE .
2) date_format
The date_format is a string that determines the format that the result string should be in.
The date_format argument is optional. If you omit it, the TO_CHAR() function will use the default date format for DATE values, default timestamp format for TIMESTAMP and TIMESTAMP WITH TIME ZONE value, and default timestamp with time zone format for TIMESTAMP WITH TIME ZONE values.
To compose value for the date_format argument, you use the Oracle date format model.
3) nlsparam
The nlsparam argument specifies the languages for names and abbreviations of day and month e.g., Monday, Mon, January, Jan, etc., in the result string.
The nlsparam argument has the following form:
This nlsparam argument is also optional. If you omit it, the TO_CHAR() function uses the default date language.
C) Format dates from table data example
See the employees table in the sample database:
The following statement uses the TO_CHAR() function to return the quarter when the employees joined the company in 2016:
The picture below illustrates the result:
Читайте также: