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

Как да получите преди един месец от днес в SQL Server 2008?

В SQL Server 2008 има date тип данни, който няма прикачено време. По този начин можете да премахнете времевата част доста лесно, просто като конвертирате, след което изпълните DateAdd .

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

Това ще върне date тип данни. За да принудите да бъде datetime отново можете просто да добавите още едно Convert :

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

Може да не се нуждаете от изрично преобразуване в datetime , обаче.

Забележка:„Преди един месец от днес“ може да се дефинира по много различни начини. Начинът, по който работи в SQL сървъра, е да върне деня от предходния месец, който е най-близък до същия номер на деня като текущия месец. Това означава, че резултатът от този израз, когато се изпълни на 31 март, ще бъде 28 февруари. Така че може да не получите очакваните резултати при определени сценарии, ако не мислите ясно за последиците от това, като например ако сте извършили едно- изчисляване на месеца няколко пъти, очаквайки да получите същия ден в различен месец (като например март -> февруари -> януари).

Вижте демонстрация на живо в SQL Fiddle

Демонстрацията показва стойностите и произтичащите типове данни на всеки израз.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кога трябва да използвам CROSS APPLY над INNER JOIN?

  2. Свържете ColdFusion към екземпляр на база данни на SQL Server

  3. Как да споделя база данни с TFS?

  4. INSERT с помощта на LIST в Съхранена процедура

  5. Задайте дата в SQL сървър