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

DAY() Примери в SQL Server (T-SQL)

В SQL Server  можете да използвате DAY() функция за връщане на "ден" част от дата. Тази функция връща цяло число, което представлява деня от месеца (не деня от седмицата).

По-долу са дадени примери за това как да използвате тази функция.

Синтаксис

Синтаксисът е така:

DAY ( date )

Където date е израз, който се разрешава до един от следните типове данни:

  • дата
  • дата и час
  • datetimeoffset
  • datetime2
  • smalldatetime
  • време

Това може да бъде израз на колона, израз, низов литерал или променлива, дефинирана от потребителя.

Пример

Ето основен пример за това как работи:

SELECT 
   SYSDATETIME() AS 'Date',
   DAY(SYSDATETIME()) AS 'Day';

Резултат:

+-----------------------------+-------+
| Date                        | Day   |
|-----------------------------+-------|
| 2018-06-18 00:20:22.1284540 | 18    |
+-----------------------------+-------+

Така че DAY() функцията успя да извлече деня от datetime2 стойност (която е върната от SYSDATETIME() функция).

Дата е предоставена като низов литерал

Ето пример, при който датата е предоставена като низов литерал.

SELECT DAY('2019-01-07') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 7        |
+----------+

И ето пример, при който датата е предоставена в различен формат:

SELECT DAY('07/01/2017') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Въпреки това, обикновено е най-добре да избягвате използването на дати в такива формати. Ако трябва да го направите, ще трябва да имате предвид езиковите настройки и/или настройките за формата на датата на текущата сесия.

Езикови настройки

Резултатът от предишния пример ще зависи от настройките за език и/или формат на датата на текущата сесия.

Когато задаваме езика, форматът на датата се задава имплицитно в същото време.

Ето какво се случва, когато предоставим един и същ аргумент за дата в две различни езикови среди.

Британски

SET LANGUAGE British;
SELECT DAY('07/01/2017') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 7        |
+----------+

нас_английски

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Настройки за формата на датата

Настройките за формат на датата могат да заменят езиковите настройки, така че вие ​​също трябва да сте наясно с тази настройка. Например, може да използваме us_English за нашия език (който има формат за дата по подразбиране mdy ), но бихме могли да заменим формата на датата да бъде dmy .

Ето един пример:

us_English – Формат на датата по подразбиране

Тук задаваме езика на us_English , което имплицитно задава формата на датата на myy .

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

us_English – Отмяна на формата на датата

Тук задаваме езика на us_English (което имплицитно задава формата на датата), но след това изрично задаваме формата на датата на dmy . Това отменя формата на датата, който беше зададен имплицитно, когато задавахме езика.

SET LANGUAGE us_English;
SET DATEFORMAT dmy;
SELECT DAY('07/01/2017') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 7        |
+----------+

Върнете името на деня

Ако трябва да върнете името на деня (за разлика от номера на деня), вижте 3 начина да получите името на деня от дата в SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Примери за PIVOTing String данни

  2. Извличане на данни от съхранена процедура, която има множество набори от резултати

  3. Защо няма прозоречни функции в клаузите where?

  4. Как да добавите ограничение за външен ключ към съществуваща таблица в SQL Server (T-SQL)

  5. Обединете няколко реда в един ред