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

Jak zdobyć miesiąc temu od dzisiaj w SQL Server 2008?

W SQL Server 2008 istnieje date typ danych, który nie ma dołączonego czasu. W ten sposób możesz łatwo usunąć część czasu, po prostu konwertując, a następnie wykonując DateAdd .

SELECT DateAdd(month, -1, Convert(date, GetDate()));

To zwróci date typ danych. Aby wymusić ustawienie datetime ponownie, możesz po prostu dodać jeszcze jeden Convert :

SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));

Możesz nie potrzebować jawnej konwersji na datetime jednak.

Uwaga:„Miesiąc temu od dzisiaj” można zdefiniować na wiele różnych sposobów. Sposób działania serwera SQL polega na zwróceniu dnia z poprzedniego miesiąca, który jest najbliższy temu samemu numerowi dnia, co miesiąc bieżący. Oznacza to, że wynikiem tego wyrażenia po uruchomieniu 31 marca będzie 28 lutego. Tak więc możesz nie uzyskać oczekiwanych wyników w niektórych scenariuszach, jeśli nie myślisz jasno o konsekwencjach tego, na przykład gdy wykonałeś jedno- obliczanie miesiąca wiele razy, spodziewając się tego samego dnia w innym miesiącu (np. marzec -> luty -> styczeń).

Zobacz demonstrację na żywo w SQL Fiddle

Demo pokazuje wartości i wynikowe typy danych każdego wyrażenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak śledzić liczbę zmian zachodzących w kolumnie? T-SQL - Serwer SQL

  2. Nie udało się zalogować nowego użytkownika SQL Server

  3. Zmień przechwytywanie danych tylko dla aktualizacji i usuwania

  4. Jak zmodyfikować zmienną w SSIS?

  5. Jak utworzyć klucz obcy w SQL Server?