PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да извлечете номера на седмицата от дата в PostgreSQL

Проблем:

Искате да получите номера на седмицата на стойност на дата или време в база данни на PostgreSQL.

Пример:

Нашата база данни има таблица с име children с данни в колоните id , first_name , last_name и birth_date .

id first_name фамилно_име родена_дата
1 Анджела Мишлен 01.01.2018
2 Мартин Джаксън 26.07.2002
3 Джъстин Кларк 26.12.2010
4 Франк Баркър 08.06.2008

За всяко дете нека получим неговото име, фамилия и номера на седмицата на рождената му дата.

Решение 1:

Ще използваме DATE_PART() функция. Ето заявката, която бихте написали:

SELECT first_name,
	 last_name,
       DATE_PART('week',birth_date) 
         AS  birth_week_number
FROM children;

Ето резултата от заявката:

first_name фамилно_име номер_на_седмица
Анджела Мишлен 1
Мартин Джаксън 30
Джъстин Кларк 51
Франк Баркър 23

Дискусия:

Използвайте DATE_PART() функция за извличане на номера на седмицата от дата в база данни на PostgreSQL. Тази функция приема два аргумента. Първият аргумент е частта с дата за извличане; използваме „седмица“, която връща номера на седмицата (напр. „1“ за първата седмица на януари, първата седмица от годината). Можете да използвате друга част от датата, като ден, година, месец, час, минута, дой (числото на деня в годината) и т.н. Можете да научите повече за частите за дата в документацията на PostgreSQL.

Вторият аргумент е име на колона на типа данни за дата/време/време или израз, връщащ един от тези типове. (В нашия пример това е колона с дата тип данни.)

Когато се използва с частта за дата „седмица“, функцията DATE_PART() връща номера на седмицата като цяло число. В нашия пример се показва номерът на седмицата за датата на раждане на даденото дете; нарекохме тази колона birth_week_number . Мартин Джаксън е роден на 2002-07-26 , така че функцията връща „30“ като номер на седмицата на неговата рождена дата.

DATE_PART() не е само един от начините да получите номера на седмицата. Друга възможност е да използвате EXTRACT() функция.

Решение 2:

Ще използваме EXTRACT() функция. Ето заявката, която бихте написали:

SELECT first_name,
	 last_name,
       EXTRACT('week' FROM birth_date) 
         AS  birth_week_number
FROM children;

Тази функция е подобна на DATE_PART() . Разликата е в синтаксиса:вместо запетая между името на частта от датата и колоната/израза има ключовата дума FROM. Също така, EXTRACT() функцията е стандарт на SQL. Резултатът е еднакъв и за двете функции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Милисекунда разделителна способност на DateTime в Ruby

  2. Добавете месеци към дата в PostgreSQL

  3. Защо само суперпотребител може да CREATE EXTENSION hstore, но не и на Heroku?

  4. Ръководство за Pgpool за PostgreSQL:Част втора

  5. django.db.utils.OperationalError Не можа да се свърже със сървъра