Informix SQL: как получить часть даты в поле даты и времени в запросе? - PullRequest
6 голосов
/ 14 ноября 2010

Каков наилучший способ использовать только часть даты в поле даты и времени в запросе?
У меня есть поле даты и времени, и я хочу сгруппировать / посчитать его по дате.

Ответы [ 4 ]

17 голосов
/ 14 ноября 2010

Есть несколько способов сделать это:

EXTEND(dt_field, YEAR TO DAY)
CAST(dt_field AS DATETIME YEAR TO DAY)
dt_field::DATETIME YEAR TO DAY
CAST(dt_field AS DATE)
dt_field::DATE
DATE(dt_field)

Самыми простыми - как и в кратчайшем - являются последние два, а обозначение функции, вероятно, наиболее четкое. Первые три оставляют вас со значением DATETIME; последние три оставляют вас со значением DATE. Они похожи, но не идентичны. Хотя они довольно свободно взаимозаменяемы.

5 голосов
/ 14 ноября 2010
date(name_of_field)
3 голосов
/ 31 мая 2016

Это

to_char(dt_field, "%d %B %Y")

дает как 31 May 2016.

Группе:

SELECT YEAR(dt_field) year, MONTH(dt_field) month, COUNT(*) count
FROM tblName
GROUP BY 1, 2
ORDER BY 1, 2;
0 голосов
/ 18 октября 2018

Просто чтобы добавить к этим ...

Я искал способ извлечения частей дат и времени в Informix и нашел их, на случай, если они кому-нибудь пригодятся, онивсе здесь в одном месте.

как текст ...

  • TO_CHAR(<value>, "%H") Часы (00 - 23)
  • TO_CHAR(<value>, "%M") Минуты (00 - 59)
  • TO_CHAR(<value>, "%S") Секунды (00 - 61)

Дополнительные коды TO_CHAR ...

  • %a Сокращенное название дня недели, как определено в локали
  • %b Сокращенное название месяца, как определено в локали
  • %C Номер века (год делится на 100 иусечено до целого числа) как целое число (от 00 до 99)
  • %D То же, что формат% m /% d /% y
  • %e День месяца какномер (от 1 до 31).Однозначному значению предшествует пробел.
  • %Fn Значение доли секунды с точностью, указанной целым числом без знака n.Значение по умолчанию n равно 2;диапазон n равен 0 ≤ n ≤ 5. Это значение переопределяет любую ширину или точность, указанную между символами% и F.
  • %h То же, что формат% b: сокращенное название месяца, как определенов локали
  • %H Час в виде двузначного целого числа (от 00 до 23) (24-часовой формат)
  • %I Час в виде двузначного целого числа (от 00 до 11)) (12-часовые часы)
  • %m Месяц в виде целого числа (от 01 до 12).Любому однозначному значению предшествует ноль (0).
  • %M Минута в виде двузначного целого числа (от 00 до 59)
  • %S Секунда в виде 2-значного числацелое число (от 00 до 61).Второе значение может быть до 61 (вместо 59), чтобы учесть случайную високосную секунду и двойную високосную секунду.
  • %T Время в формате% H:% M:% S
  • %w День недели как число (от 0 до 6);0 представляет языковой эквивалент воскресенья.
  • %y Год в виде двузначного десятичного числа.

В виде целых чисел ...

  • DAY(<value>) День месяца (0 - максимум месяца)
  • MONTH(<value>) Месяц года (1 - 12)
  • YEAR(<value>) Номер года
...