Trích xuất giờ từ DateTime (SQL Server 2005)


179

Tôi có thể trích xuất các tháng và ngày bằng cách sử dụng Day(Date()), Month(Date()). Tôi không thể trích xuất giờ, với HOUR(Date()). Tôi nhận được lỗi sau đây.

'HOUR' is not a recognized built-in function name.

Làm thế nào tôi có thể trích xuất giờ?

Câu trả lời:


354
SELECT DATEPART(HOUR, GETDATE());

DATEPART tài liệu


11
Vui lòng đánh vần những thứ như HOURthay vì sử dụng tốc ký lười biếng không phải lúc nào cũng như bạn mong đợi (thử y). Hãy thoải mái duy trì mã của riêng bạn theo cách bạn muốn, nhưng đối với việc giảng dạy, tôi phản đối việc thúc đẩy tốc ký lười biếng dẫn đến nhầm lẫn hoặc tệ hơn. Xem # 6 tại đây blog.sqlsentry.com/aaronbertrand/ Kẻsqlblog.com/bloss/aaron_bertrand/archive/2011/09/20/ trộm
Aaron Bertrand

3
@AaronBertrand Đó không phải là "tốc ký lười biếng", đó là dạng viết tắt. "Lười" đang sử dụng các hình thức ngắn ngắn hơn phiên bản tài liệu tối thiểu, có thể hoạt động nhưng có thể có hậu quả không lường trước được.
Auspex

3
@Auspex Không thể buộc bạn không hoàn toàn bỏ lỡ quan điểm hoặc đọc các lý do đằng sau lời nói của tôi. Không phải tất cả mọi thứ được ghi lại là một thực tiễn tốt nhất.
Aaron Bertrand

5
@AaronBertrand Tôi đã nhận được điểm. Nhưng bạn đang cố gắng thực thi (trong phạm vi chỉnh sửa không đúng câu trả lời của nhiều người) theo tiêu chuẩn của riêng bạn. "Thực hành tốt nhất" của bạn là không có gì sắp xếp.
Auspex

29

... bạn có thể sử dụng nó trên bất kỳ loại độ chi tiết nào, ví dụ:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(lưu ý: Tôi thích [] xung quanh từ dành riêng ngày. Tất nhiên đó là trong trường hợp cột của bạn có dấu thời gian được gắn nhãn "ngày")



9

cũng thử cái này

   DATEPART(HOUR,GETDATE()) 

2

DATEPART(HOUR, [date]) trả về giờ trong giờ quân sự (00 đến 23) Nếu bạn muốn 1 giờ sáng, 3 giờ chiều, v.v., bạn cần phải giải quyết:

SELECT Run_Time_Hour =
CASE DATEPART(HOUR, R.date_schedule)
    WHEN 0 THEN  '12AM'
    WHEN 1 THEN   '1AM'
    WHEN 2 THEN   '2AM'
    WHEN 3 THEN   '3AM'
    WHEN 4 THEN   '4AM'
    WHEN 5 THEN   '5AM'
    WHEN 6 THEN   '6AM'
    WHEN 7 THEN   '7AM'
    WHEN 8 THEN   '8AM'
    WHEN 9 THEN   '9AM'
    WHEN 10 THEN '10AM'
    WHEN 11 THEN '11AM'
    WHEN 12 THEN '12PM'
    ELSE CONVERT(varchar, DATEPART(HOUR, R.date_schedule)-12) + 'PM'
END
FROM
    dbo.ARCHIVE_RUN_SCHEDULE R


1
select case when [am or _pm] ='PM' and datepart(HOUR,time_received)<>12 
           then dateadd(hour,12,time_received) 
           else time_received 
       END 
from table

làm


1

Hàm DATEPART () được sử dụng để trả về một phần của ngày / giờ, chẳng hạn như năm, tháng, ngày, giờ, phút, v.v.

datepart    ***Abbreviation

year        ***yy, yyyy 
quarter     ***qq, q 
month       ***mm, m 
dayofyear   ***dy, y 
day         ***dd, d 
week        ***wk, ww 
weekday     ***dw, w 
hour        ***hh 
minute      ***mi, n 
second      ***ss, s 
millisecond ***ms 
microsecond ***mcs 
nanosecond  ***ns 

Thí dụ

select * 
from table001
where datepart(hh,datetime) like 23

0

Tôi không thể trích xuất giờ, với GIỜ (Ngày ())

Có một cách để gọi HOUR(tôi không khuyên bạn nên sử dụng nó bởi vì có DATEPARTchức năng) bằng cách sử dụng Hàm vô hướng ODBC :

SELECT {fn HOUR(GETDATE())} AS hour

LiveDemo


-2

bạn phải sử dụng datepart ()

like 


datepart(hour , getdate())

8
Điểm đóng góp của bạn là gì, lặp lại thông tin được cung cấp trong hầu hết mọi "câu trả lời" khác cho câu hỏi này?
Cindy Meister
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.