2009-02-11 33 views
18

Duplicate củaWhat's the BEST way to remove the time portion of a datetime value (SQL Server)?T-SQL để cắt một ngày giờ thành ngày gần nhất?

Tôi có một cột đó theo dõi khi mọi thứ được tạo ra bằng cách sử dụng datetime, nhưng tôi muốn tạo ra một báo cáo rằng nhóm chúng vào ban ngày, vì vậy tôi cần một cách để nulling ra thành phần thời gian của cột ngày giờ.

Làm cách nào để thực hiện việc này?

Trả lời

15

Một cách là thay đổi getdate() tên cột của bạn,

select dateadd(dd, datediff(dd, 0, getdate())+0, 0) 
1

Có. Có rất nhiều định dạng để bạn lựa chọn nên tôi sẽ liên kết nó.

http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm

Nếu bạn muốn không ra thời gian như bài viết của bạn ngụ ý, bạn có thể thử này:

select cast(convert(varchar, getdate(), 101) as datetime) 
+1

chuyển đổi (datetime, convert (varchar, getdate(), 101)) –

+0

liên kết bị hỏng. Liên kết mới cho trang http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm – monkeypushbutton

1

convert (varchar, lĩnh vực ngày/giá trị/etc, 101)

Đây là cách đơn giản nhất để lấy ngày từ ngày giờ.

0
declare @CurrentDate datetime 
set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0) 

--or--

select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly 
from tblX 
0

Trong tìm kiếm của tôi tôi đi qua các giải pháp sau đây, nó dải thời gian chỉ trong thời gian UTC, nhưng tôi thấy nó thú vị, vì vậy tôi cũng nghĩ rằng ai đó cũng vậy:

FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME 
BEGIN 
    RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME) 
END 

Tôi cho rằng nó chạy nhanh vì tất cả những gì nó làm là làm tròn và truyền.

5

Dưới đây là một giải pháp khác:

SELECT CAST(FLOOR(CAST(GETDATE() AS float)) AS smalldatetime) 
25

Tại sao không chuyển đổi thẳng cho đến nay:

select convert(date, getdate()) 

này truncates ngày, không vòng. Để làm tròn Ngày làm điều này:

select convert(date, getdate() + 0.5) 
+1

Dễ dàng trả lời tốt nhất cho sự đơn giản và rõ ràng của nó. –

+6

Không nếu bạn đang sử dụng SqlServer 2005 – TheMoot

+0

@TheMoot: Tại sao không? – nalply

Các vấn đề liên quan