Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na uzyskanie pierwszego dnia miesiąca w SQL Server

Poniżej znajdują się trzy opcje używania T-SQL do zwracania pierwszego dnia miesiąca w SQL Server.

Może to być pierwszy dzień bieżącego miesiąca lub pierwszy dzień miesiąca na podstawie podanej daty.

Opcja 1

Jednym ze sposobów na to jest:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(dd, -( DAY( @date ) -1 ), @date);

Wynik:

2035-10-01

Wiąże się to z użyciem niektórych funkcji T-SQL w celu przesunięcia daty w celu przywrócenia daty na początek miesiąca.

Aby uzyskać więcej informacji o DATEADD() i DAY() funkcje, zobacz DATEADD() Przykłady w SQL Server i DAY() Przykłady w SQL Server.

Opcja 2

Oto kolejna opcja uzyskania pierwszego dnia miesiąca:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(month, DATEDIFF(month, 0, @date), 0);

Wynik:

2035-10-01 00:00:00.000

Tutaj włączyliśmy DATEDIFF() funkcji w naszych obliczeniach.

Chociaż zadeklarowaliśmy zmienną początkową jako date wartość, wynikiem jest datetime wartość. Możemy użyć CONVERT() lub CAST() przekonwertować wynik na date wartość:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT CAST(DATEADD(month, DATEDIFF(month, 0, @date), 0) AS date);

Wynik:

2035-10-01

Opcja 3

Oto kolejna opcja:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

Wynik:

2035-10-01 00:00:00.000

Podobnie jak w przypadku opcji 2, wynikiem jest datetime wartość, ale tym razem dzieje się tak, ponieważ zadeklarowaliśmy zmienną jako datetime wartość. Możemy jednak potraktować go w ten sam sposób, aby przekonwertować go na date wartość:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date - DAY( @date ) + 1 AS date);

Wynik:

2035-10-01

Powód, dla którego nie zadeklarowaliśmy zmiennej jako date wartość jest spowodowana błędem:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

Wynik:

Msg 206, Level 16, State 2, Line 3
Operand type clash: date is incompatible with int

Dzieje się tak, ponieważ próbujemy dodać liczbę całkowitą do date wartość, która nie działa. Jednak dodanie liczby całkowitej do datetime value działa, dlatego zadeklarowaliśmy zmienną jako datetime .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Policz rekordy dla każdego miesiąca w roku

  2. Tworzenie indeksu na zmiennej tabeli

  3. Generuj ciąg skrótu MD5 za pomocą T-SQL

  4. Zwróć listę wiadomości e-mail wysłanych z poczty bazy danych SQL Server (T-SQL)

  5. Dodaj kolumny do istniejącej tabeli w bazie danych SQL Server