Как узнать или изменить формат даты по умолчанию в SQL Server | Стрелец Coder

TO_DATE

Syntax


Description of the illustration to_date.gif

Purpose

converts of , , , or datatype to a value of datatype. The is a datetime model format specifying the format of . If you omit , then must be in the default date format. If is , for Julian, then must be an integer.

The default date format is determined implicitly by the initialization parameter or can be set explicitly by the parameter.

The argument has the same purpose in this function as in the function for date conversion.

Do not use the function with a value for the argument. The first two digits of the returned value can differ from the original , depending on or the default date format.

This function does not support data directly. However, s can be passed in as arguments through implicit data conversion.

Examples

The following example converts a character string into a date:

SELECT TO_DATE( ‘January 15, 1989, 11:00 A.M.’, ‘Month dd, YYYY, HH:MI A.M.’, ‘NLS_DATE_LANGUAGE = American’) FROM DUAL; TO_DATE(‘ ——— 15-JAN-89

The value returned reflects the default date format if the parameter is set to ». Different values result in different default date formats:

ALTER SESSION SET NLS_TERRITORY = ‘KOREAN’; SELECT TO_DATE( ‘January 15, 1989, 11:00 A.M.’, ‘Month dd, YYYY, HH:MI A.M.’, ‘NLS_DATE_LANGUAGE = American’) FROM DUAL; TO_DATE( ——— 89/01/15

Форум: «Базы»;
Поиск по всему сайту: www.delphimaster.net;
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

Формат даты в SQL запросе 

Draught   (2006-11-28 03:56) [0]

Есть таблица, в которой поле типа Дата, при простой выборке всех записей из таблицы видно, что дата передается как:

т.е.

Функция Oracle TO_DATE (PL/SQL)

как YYYY-MM-DD HH:MM:SS
но если мы желаем сделать выборку за период, т.е. что-то вроде
получаем 0 результатов… причина проста, дату требуется передавать в формате Access, дата представлена в виде обычного числа, т.е. 24.11.2006=39045.

Следующий запрос позволяет делать выборку за период с 23 по 24.11.2006

Вопрос: как передавать в запросе дату не конвертируя ее в число?

СУБД — MS Access
Delphi — BDS 2006


ЮЮ ©   (2006-11-28 04:17) [1]

поле типа Дата, при простой выборке всех записей из таблицы видно, что дата передается как:
Ключевое поле — видно. Это она так отображается. Причем способ отображения можно менять и настраивать. А хранится дата, как количество дней от некой даты, т.е. числом.

Чтобы не заморачиватться с символьным форматом представления дат, разным для разных БД, следует используй параметрический запрос:

select * from table1 where Table1.Date between :DateFrom and :DateTo

где параметры типа TDateTime


ЮЮ ©   (2006-11-28 04:21) [2]

а 2006-11-20 в твоем результате вычисляется как принято везде:
 2006 <минус> 11 <минус> 20
а записав 20/11/2006 получишь 20 <разделить на> 11 <разделить на> 2006
🙂

Cимвольное представление даты следует брать в кавычки, на то оно и символьное


Draught   (2006-11-28 04:21) [3]

так, а где описываются переменные DateFrom и DateTo?


Draught   (2006-11-28 04:27) [4]

так…

2006-11-22 — дата
22.11.2006 — тоже дата
а вот 39044 — число, точнее это тоже дата, только ее еще посчитать нужно

меня интересует вопрос, как избавиться от этого вот числа и передавать дату в более привычном виде?


ЮЮ ©   (2006-11-28 04:40) [5]

2006-11-22 — дата
22.11.2006 — тоже дата

врешь. попробуй второй вариант всунуть в свой запрос — огребешь ошибку синтаксиса.

а вот
"2006-11-22" и "22.11.2006" и "#22.11.2006#", "20061122" — символьные представления двты, которые могут быть, а могут и нет, переведены во внутреннее значение — 39044.

А перевод — дело тонкое.
01.03.06 можно интерпретировать и как 1 марта и как 3 января.

Это параметры. Присваиваются перед открытием запроса.

Какой комонет использутся для выполнения запроса?


ЮЮ ©   (2006-11-28 04:42) [6]

откуда у тебя в программе берутся эти числа в более привычном виде?


Draught   (2006-11-28 04:51) [7]

Все… разобрался…

Дату передаю через параметры ADOQuery, собсна использую DateFrom и DateTo — заработало 🙂

А что касается этих самых чисел — я запросы строю в Aqua Data Studio, так вот если там дату передавать как это самое число (см запрос в вопросе), то все работает…


Draught   (2006-11-28 04:51) [8]

Спасиб за помощь 🙂


ЮЮ ©   (2006-11-28 05:29) [9]


> апросы строю в Aqua Data Studio,

тогда символьное представление обрамляется символрм #, а не кавычками, а вот где nn mm и yy и какой символ разделителя — точно не знаю — эксперементируй.


Anatoly Podgoretsky ©   (2006-11-28 08:46) [10]

> Draught  (28.11.2006 04:51:07)  [7]

> я запросы строю в Aqua Data Studio

Выбрось это и больше никогда не пользуйся


Anatoly Podgoretsky ©   (2006-11-28 08:47) [11]

> ЮЮ  (28.11.2006 05:29:09)  [9]

А экспериментируй, не экспериментируй, но против интелекта не попрешь.


LifeTime   (2006-11-28 16:55) [12]

А что? Вот так:
 
не помогает???


sniknik ©   (2006-11-28 18:02) [13]

LifeTime   (28.11.06 16:55) [12]
см. [0]
> СУБД — MS Access

и зачем конвертация в дельфи а после назад в sql сервере? параметры правильнее, было число, передали число и используется число. без всяких лишних операций.


Форум: «Базы»;
Поиск по всему сайту: www.delphimaster.net;
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх

Память: 0.74 MB
Время: 0.075 c

TO_DATE ФУНКЦИЯ


Oracle / PLSQL: TO_DATE Function

This Oracle tutorial explains how to use the Oracle/PLSQL TO_DATE function with syntax and examples.

Description

The Oracle/PLSQL TO_DATE function converts a string to a date.

Syntax

The syntax for the TO_DATE function in Oracle/PLSQL is:

TO_DATE( string1 [, format_mask] [, nls_language] )

Parameters or Arguments

string1
The string that will be converted to a date.
format_mask

Optional. This is the format that will be used to convert string1 to a date. It can be one or a combination of the following values:

Parameter Explanation
YEAR Year, spelled out
YYYY 4-digit year
YYY
YY
Y
Last 3, 2, or 1 digit(s) of year.
IYY
IY
I
Last 3, 2, or 1 digit(s) of ISO year.
IYYY 4-digit year based on the ISO standard
RRRR Accepts a 2-digit year and returns a 4-digit year.
A value between 0-49 will return a 20xx year.
A value between 50-99 will return a 19xx year.
Q Quarter of year (1, 2, 3, 4; JAN-MAR = 1).
MM Month (01-12; JAN = 01).
MON Abbreviated name of month.
MONTH Name of month, padded with blanks to length of 9 characters.
RM Roman numeral month (I-XII; JAN = I).
WW Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
W Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
IW Week of year (1-52 or 1-53) based on the ISO standard.
D Day of week (1-7).
DAY Name of day.
DD Day of month (1-31).
DDD Day of year (1-366).
DY Abbreviated name of day.
J Julian day; the number of days since January 1, 4712 BC.
HH Hour of day (1-12).
HH12 Hour of day (1-12).
HH24 Hour of day (0-23).
MI Minute (0-59).
SS Second (0-59).
SSSSS Seconds past midnight (0-86399).
AM, A.M., PM, or P.M. Meridian indicator
AD or A.D AD indicator
BC or B.C. BC indicator
TZD Daylight savings information. For example, ‘PST’
TZH Time zone hour.
TZM Time zone minute.
TZR Time zone region.
nls_language
Optional. This is the nls language used to convert string1 to a date.

Returns

The TO_DATE function returns a date value.

Applies To

The TO_DATE function can be used in the following versions of Oracle/PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Example

Let’s look at some Oracle TO_DATE function examples and explore how to use the TO_DATE function in Oracle/PLSQL.

For example:

TO_DATE(‘2003/07/09’, ‘yyyy/mm/dd’) Result: date value of July 9, 2003 TO_DATE(‘070903’, ‘MMDDYY’) Result: date value of July 9, 2003 TO_DATE(‘20020315’, ‘yyyymmdd’) Result: date value of Mar 15, 2002

You could use the TO_DATE function with the dual table as follows:

SELECT TO_DATE(‘2015/05/15 8:30:25’, ‘YYYY/MM/DD HH:MI:SS’) FROM dual;

This would convert the string value of to a date value.

Share this page:

  • DATE_FORMAT(date, format) форматирует дату date в соответствии с выбранным форматом formate. Эта функция очень часто используется. Например, в MySQL дата имеет формат представления YYYY-MM-DD (год-месяц-число), а нам привычнее формат DD-MM-YYYY (число-месяц-год).

    Поэтому для привычного нам отображения даты ее необходимо переформатировать. Давайте сначала приведем запрос, а затем разберемся, как задавать формат: Теперь дата выглядит для нас привычно. Для задания формата даты используются специальные определители. Для удобства перечислим их в таблице.

    Опред Описание
    %a Сокращенное наименование дня недели (Mon — понедельник, Tue — вторник, Wed — среда, Thu — четверг, Fri — пятница, Sat — суббота, Sun — воскресенье).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%a’);

    Результат:

    %b Сокращенное наименование месяцев (Jan — январь, Feb — февраль, Mar — март, Apr — апрель, May — май, Jun — июнь, Jul — июль, Aug — август, Sep — сентябрь, Oct — октябрь, Nov — ноябрь, Dec — декабрь).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%b’);

    Результат:

    %c Месяц в числовой форме (1 — 12).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%с’);

    Результат:

    %d День месяца в числовой форме с нулем (01 — 31).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%d’);

    Результат:

    %D День месяца в английском варианте (1st, 2nd…).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%D’);

    Результат:

    %e День месяца в числовой форме без нуля (1 — 31).

    Пример:

    SELECT DATE_FORMAT(CURDATE(), ‘%e’);

    Результат:

    %H Часы с ведущим нулем от 00 до 23.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 23:03:20’, ‘%H’);

    Результат:

    %h Часы с ведущим нулем от 00 до 12.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 23:03:20’, ‘%h’);

    Результат:

    %i Минуты от 00 до 59.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 23:03:20’, ‘%i’);

    Результат:

    %j День года от 001 до 366.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 23:03:20’, ‘%j’);

    Результат:

    %k Часы c ведущим нулем от 0 до 23.

    Пример:

    SELECT DATE_FORMAT(‘2011-12-31 01:03:20’, ‘%k’);

    Результат:

    %l Часы без ведущим нуля от 1 до 12.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%l’);

    Результат:

    %M Название месяца без сокращения.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%M’);

    Результат:

    %M Название месяца без сокращения.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%M’);

    Результат:

    %m Месяц в числовой форме с ведущим нулем (01 — 12).

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%m’);

    Результат:

    %p АМ или РМ для 12-часового формата.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%p’);

    Результат:

    %r Время в 12-часовом формате.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%r’);

    Результат:

    %s Секунды от 00 до 59.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 00:03:20’, ‘%s’);

    Результат:

    %T Время в 24-часовом формате.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-15 21:03:20’, ‘%T’);

    Результат:

    %u Неделя (00 — 52), где первым днем недели считается понедельник.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%u’);

    Результат:

    %U Неделя (00 — 52), где первым днем недели считается воскресенье.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%U’);

    Результат:

    %W Название дня недели без сокращения.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%W’);

    Результат:

    %w Номер дня недели (0 — воскресенье, 6 — суббота).

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%w’);

    Результат:

    %Y Год, 4 разряда.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%Y’);

    Результат:

    %y Год, 2 разряда.

    Пример:

    SELECT DATE_FORMAT(‘2011-04-17 21:03:20’, ‘%y’);

    Результат:

  • STR_TO_DATE(date, format) функция обратная предыдущей, она принимает дату date в формате format, а возвращает дату в формате MySQL.

    Как видите, сама функция GET_FORMAT() возвращает формат представления, а вместе с функцией DATE_FORMAT() выдает дату в нужном формате. Сделайте сами запросы со всеми пятью стандартами и посмотрите на разницу.

  • TIME_FORMAT(time, format) функция аналогична функции DATE_FORMAT(), но используется только для времени:
  • GET_FORMAT(date, format) функция возвращает строку форматирования, соответствующую одному из пяти форматов времени:

    EUR — европейский стандарт
    USA — американский стандарт
    JIS — японский индустриальный стандарт
    ISO — стандарт ISO (международная организация стандартов)
    INTERNAL — интернациональный стандарт

    Эту функцию хорошо использовать совместно с предыдущей — DATE_FORMAT(). Посмотрим на примере: Как видите, сама функция GET_FORMAT() возвращает формат представления, а вместе с функцией DATE_FORMAT() выдает дату в нужном формате. Сделайте сами запросы со всеми пятью стандартами и посмотрите на разницу.

  • Теперь давайте рассмотрим особенности работы с функцией TO_CHAR() применительно к преобразованию, чисел. При выполнении этой операции функция имеет следующий синтаксис:

    TO_CHAR(число, [, формат[, nls_параметр]])

    При этом функция TO_CHAR() преобразует тип NUMBER в тип VARCHAR2. В таблице указано, какие есть форматы и как они используются при преобразовании:

    Элемент формата Пример строки данного формата Описание
    9 99 Каждая цифра 9 представляет значащую цифру результата. Число значащих цифр возвращаемого значения равно числу цифр 9, отрицательное значение предваряется знаком минуса. Все начальные нули заменяются пробелами.
    0 0999 Возвращается число с начальными нулями, а не пробелами.
    0 9990 Возвращается число с конечными нулями, а не пробелами.
    $ $999 Возвращаемое значение предваряется знаком доллара не зависимо от используемого символа денежной единицы можно применить совместно с начальными или конечными нулями.
    B B999 Вместо нулевой целой части десятичного число возвращаются пробелы.
    MI 999MI Возвращает отрицательное число, у которого знак минуса указан не в начале, а в конце. В положительном значении на этом месте будет пробел.
    S S9999 Возвращаемое число предваряется знаком: + для положительных, чисел — для отрицательных.
    S 9999S Возвращаемое число заканчивается знаком: + для положительных, чисел — для отрицательных.
    PR 99PR Возвращается отрицательное число в угловых скобках «<«, «>». У положительных чисел, на этом месте пробелы.
    D 99D9 Возвращает число с десятичной точкой в указанной позиции. Число 9 с обеих сторон указывает максимальное число цифр.
    G 9G999 Возвращает число с разделителем групп в указанной позиции. G может появляться в указанной строке формата неоднократно.

    C C99 Возвращает число с символом денежной единицы ISO в указанной позиции. C может появляться в указанной строке формата неоднократно.
    L L999 Возвращает число с символом денежной единицы национального языка в указанной позиции.
    , 999,999 Возвращает число с запятой в указанной позиции, не зависимо от выбранного разделителя групп.
    . 99.99 Возвращает число с десятичной точкой в указанной позиции, не зависимо от выбранного десятичного разделителя.
    V 99V999 Возвращает число, умноженное на 10n, где n — это число цифр 9 после V. При необходимости значение округляется.
    EEEE 9.99EEEE Возвращает число в экспоненциальном представлении.
    RM RM Возвращает число при помощи римских цифр верхнего регистра.

    Для примера, приведем вот такой блок:

    SET SERVEROUTPUT ON BEGIN — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(534523)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(34387, ‘99999’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(5000, ‘$9999’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(-9, ‘9S’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(-34, ‘S99’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(3 — 5, ‘999MI’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(7 — 3, ‘S9’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(4 — 5, ’99PR’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(8900, ‘L9999’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(10000000, ‘9.9EEEE’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(10, ‘RM’)); — Function TO_CHAR() — DBMS_OUTPUT.put_line( TO_CHAR(105, ‘RM’)); END; /

    После запуска получаем:

    SQL> BEGIN 2 3 — Function TO_CHAR() — 4 DBMS_OUTPUT.put_line( TO_CHAR(534523)); 5 6 — Function TO_CHAR() — 7 DBMS_OUTPUT.put_line( TO_CHAR(34387, ‘99999’)); 8 9 — Function TO_CHAR() — 10 DBMS_OUTPUT.put_line( TO_CHAR(5000, ‘$9999’)); 11 12 — Function TO_CHAR() — 13 DBMS_OUTPUT.put_line( TO_CHAR(-9, ‘9S’)); 14 15 — Function TO_CHAR() — 16 DBMS_OUTPUT.put_line( TO_CHAR(-34, ‘S99’)); 17 18 — Function TO_CHAR() — 19 DBMS_OUTPUT.put_line( TO_CHAR(3 — 5, ‘999MI’)); 20 21 — Function TO_CHAR() — 22 DBMS_OUTPUT.put_line( TO_CHAR(7 — 3, ‘S9′)); 23 24 — Function TO_CHAR() — 25 DBMS_OUTPUT.put_line( TO_CHAR(4 — 5, ’99PR’)); 26 27 — Function TO_CHAR() — 28 DBMS_OUTPUT.put_line( TO_CHAR(8900, ‘L9999’)); 29 30 — Function TO_CHAR() — 31 DBMS_OUTPUT.put_line( TO_CHAR(10000000, ‘9.9EEEE’)); 32 33 — Function TO_CHAR() — 34 DBMS_OUTPUT.put_line( TO_CHAR(10, ‘RM’)); 35 36 — Function TO_CHAR() — 37 DBMS_OUTPUT.put_line( TO_CHAR(105, ‘RM’)); 38 39 END; 40 / 534523 34387 $5000 9- -34 2- +4

    И для полноты картины, давайте рассмотрим функцию TO_NUMBER(), так как с TO_CHAR() они практически близнецы, но с двух противоположных сторон.

    Синтаксис у TO_NUMBER следующий:

    TO_NUMBER(строка_символов, [, формат [, nls_параметр]])

    В данном случае «строка_символов» — это тип CHAR или VARCHAR2, которая применительно к «формат», преобразуется в типу NUMBER. «формат» в данной функции, тот же что и для TO_CHAR(). Вот так достаточно просто. А, если в предыдущем примере поменять, например, третью снизу строку вот так:

    DBMS_OUTPUT.put_line( TO_CHAR(TO_NUMBER(‘10000000’, ‘9.9EEEE’), ‘9.9EEEE’) );

    То, достаточно хорошо видно, как все взаимосвязано для этих двух функций! Пробуйте!!! 🙂


    Предыдущий Шаг | Следующий Шаг | Оглавление
    Автор Летучий Сергей.


    Функции работы с датами ORACLE SQL

    Категория: Блог Опубликовано 23.05.2017

    Наиболее часто используемые в повседневной работе функции для преобразования, обработки данных типа DATE
    SYSDATE — текущая дата, sysdate-1 — вчера , sysdate-1/24 — час назад 🙂

    последний день месяца

    SELECTLAST_DAY(sysdate) «LASTDAY»FROM DUAL;

    — 30.09.2012

    первый день месяца 

    SELECTTRUNC(sysdate, ‘MONTH’) «FIRSTDAYOFMONTH»FROM DUAL;

    — 01.09.2012

    первый день месяца, другая запись

    SELECTTRUNC(sysdate, ‘MM’) «FIRSTDAYOFMONTH»FROM DUAL;

    —01.09.2012

    первый день года

    SELECTTRUNC(sysdate, ‘YEAR’) «FIRSTDAYOFYEAR»FROM DUAL;

    — 01.01.2012

    первый день года , другая запись

    SELECTTRUNC(sysdate, ‘YY’) «FIRSTDAYOFYEAR»FROM DUAL;

    —01.01.2012 

    извлечь месяц из даты

    SELECTEXTRACT(MONTHFROMsysdate) FROM dual;

    —9

    извлечь день из даты

    SELECTEXTRACT(dayFROMsysdate) FROM dual;

    —21

    извлечь год из даты

    SELECTEXTRACT(YEARFROMsysdate) FROM dual;

    — 2012

    Новые шаблоны для Joomla 3 на joomlan.ru.
    шаблоны WordPress

    Просмотров: 2094

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *