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

3 cách để có được ngày đầu tiên của tháng trong SQL Server

Dưới đây là ba tùy chọn để sử dụng T-SQL để trả về ngày đầu tiên của tháng trong SQL Server.

Đây có thể là ngày đầu tiên của tháng hiện tại hoặc ngày đầu tiên của tháng dựa trên một ngày nhất định.

Tùy chọn 1

Một cách để làm điều đó là như sau:

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

Kết quả:

 2035-10-01 

Điều này liên quan đến việc sử dụng một số hàm T-SQL để thực hiện chuyển đổi ngày nhằm đưa ngày trở lại đầu tháng.

Để biết thêm thông tin về DATEADD()DAY() các hàm, xem DATEADD() Ví dụ trong SQL Server và DAY() Ví dụ trong SQL Server.

Tùy chọn 2

Đây là một tùy chọn khác để đón ngày đầu tiên của tháng:

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

Kết quả:

 2035-10-01 00:00:00.000 

Ở đây, chúng tôi đã kết hợp DATEDIFF() vào tính toán của chúng tôi.

Mặc dù chúng tôi đã khai báo biến ban đầu là một date giá trị, kết quả là datetime giá trị. Chúng ta có thể sử dụng CONVERT() hoặc CAST() để chuyển đổi kết quả thành một date giá trị:

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

Kết quả:

 2035-10-01 

Tùy chọn 3

Đây là một tùy chọn khác:

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

Kết quả:

 2035-10-01 00:00:00.000 

Tương tự như tùy chọn 2, kết quả là datetime nhưng lần này là do chúng tôi đã khai báo biến là datetime giá trị. Tuy nhiên, chúng tôi có thể xử lý nó tương tự để chuyển nó thành date giá trị:

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

Kết quả:

 2035-10-01 

Lý do chúng tôi không khai báo biến là một date là vì điều đó sẽ dẫn đến lỗi:

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

Kết quả:

 Msg 206, Cấp độ 16, Trạng thái 2, Dòng 3 

Điều này là do chúng tôi đang cố gắng thêm một số nguyên vào date giá trị này không hoạt động. Tuy nhiên, thêm một số nguyên vào datetime giá trị hoạt động và đó là lý do tại sao chúng tôi khai báo biến là 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. ĐẶT SỐ KHOẢN khi sử dụng

  2. Hiệu suất SQL Server IN so với EXISTS

  3. Truyền mảng tới một thủ tục được lưu trữ trên máy chủ SQL

  4. Trình điều khiển không thể thiết lập kết nối an toàn với SQL Server bằng cách sử dụng mã hóa Lớp cổng bảo mật (SSL)

  5. Câu lệnh xóa SQL Server:Cách xóa một hoặc nhân hàng khỏi bảng