2010-04-07 40 views
5

Có thể đánh lừa SQL Server để trả về một ngày khác trên GetDate() mà không thực sự thay đổi ngày của máy không?
Điều này sẽ rất tuyệt, vì chúng tôi có cơ sở dữ liệu với dữ liệu cũ và tôi đang thử nghiệm một số truy vấn sử dụng getdate().
Tôi có thể thay đổi ngày máy của mình nhưng điều đó mang lại một số sự cố khác với các ứng dụng khác ...
Bất kỳ mẹo nào?
Cảm ơn!Thay đổi đầu ra của Getdate

Trả lời

8

Theo documentation for getdate():

Giá trị này có nguồn gốc từ hệ thống điều hành của máy tính trên mà thể hiện của SQL Server là chạy.

Vì nó được lấy từ hệ điều hành, tôi không nghĩ bạn có thể thay đổi riêng biệt.

4

Bạn luôn có thể quấn GetDate() trong chức năng tùy chỉnh và sử dụng ở mọi nơi, mặc dù đây không phải là giải pháp tối ưu.

+0

cách bạn có thể làm điều đó? ngay cả khi bạn tạo một UDF nó sẽ là 'dbo.GETDATE()' –

+1

@KM: Bạn sẽ thay đổi việc thực hiện hàm để bạn có thể thay đổi nó ở khắp mọi nơi sửa đổi một nơi. @Klausbyskov: Nếu tôi không nhầm, bạn không thể có hàm không xác định như GetDate trong UDF. – JoshBerke

+0

KM là chính xác, nó sẽ chỉ sau đó được sử dụng bằng cách chỉ định dbo.getdate(), nó không ghi đè/thay thế hàm dựng sẵn. – Andrew

1

Không, không có nhiều bạn có thể làm khác hơn là một cái gì đó như thế này:

SELECT GETDATE()-7 --get date time 7 days ago 
0
select dateadd(dd, -7 getdate()) 
+0

giúp chạy nhiều tập lệnh bằng getdate() mà không thay đổi chúng, để kiểm tra chúng trước dữ liệu trong quá khứ? – Artemix

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