Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để có được một tháng trước từ hôm nay trong SQL Server 2008?

Trong SQL Server 2008 có date kiểu dữ liệu, không có thời gian đính kèm. Do đó, bạn có thể loại bỏ phần thời gian khá dễ dàng bằng cách chuyển đổi, sau đó thực hiện DateAdd .

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

Điều này sẽ trả về một date loại dữ liệu. Để buộc nó phải là datetime một lần nữa, bạn có thể chỉ cần thêm một Convert nữa :

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

Bạn có thể không cần chuyển đổi rõ ràng sang datetime , mặc dù.

Lưu ý:"Một tháng trước kể từ hôm nay" có thể được định nghĩa theo nhiều cách khác nhau. Cách nó hoạt động trong máy chủ SQL là trả về ngày của tháng trước đó là ngày gần nhất với cùng số ngày với tháng hiện tại. Điều này có nghĩa là kết quả của biểu thức này khi chạy vào ngày 31 tháng 3 sẽ là ngày 28 tháng 2. Vì vậy, bạn có thể không nhận được kết quả mong đợi trong một số trường hợp nhất định nếu bạn không suy nghĩ rõ ràng về các phân nhánh của điều này, chẳng hạn như nếu bạn thực hiện một- tính toán tháng nhiều lần, mong đợi lấy cùng một ngày trong một tháng khác (chẳng hạn như thực hiện từ tháng 3 -> tháng 2 -> tháng 1).

Xem bản trình diễn trực tiếp tại SQL Fiddle

Bản trình diễn hiển thị các giá trị và kiểu dữ liệu kết quả của mỗi biểu thức.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để liên kết tham số ISO8601 TSQL DATETIME với PDO?

  2. Thực thi một thủ tục được lưu trữ bằng Bộ lập lịch tác vụ Windows

  3. So sánh ngày của SQL Server chỉ dựa trên tháng và năm

  4. Cách cập nhật bảng Sql Server CE từ một bảng khác

  5. Sử dụng Web.Config để thiết lập chuỗi kết nối cơ sở dữ liệu SQL của tôi?