tôi có Gói ssis chạy vào ngày làm việc (mon-Fri). nếu tôi nhận được tập tin vào thứ ba, nền (DB), phải mất ngày làm việc trước đó và thực hiện một số giao dịch. Nếu tôi chạy công việc vào thứ sáu, nó phải lấy ngày thứ hai và xử lý các giao dịch.Cách nhận ngày làm việc trước đó trong một tuần với ngày làm việc hiện tại bằng máy chủ sql
tôi đã sử dụng các truy vấn dưới đây để có được ngày kinh doanh trước
Select Convert(varchar(50), Position_ID) as Position_ID,
TransAmount_Base,
Insert_Date as InsertDate
from tblsample
Where AsOfdate = Dateadd(dd, -1, Convert(datetime, Convert(varchar(10), '03/28/2012', 101), 120))
Order By Position_ID
nếu tôi thực hiện truy vấn này tôi sẽ có được kết quả của ngày hôm qua Transactios. nếu tôi chạy cùng một truy vấn vào thứ hai, nó phải lấy các giao dịch thứ Sáu thay vì các ngày chủ nhật.
Sử dụng 'DATENAME' để tránh cần biết' DATEFIRST', nhưng vẫn hoàn thành việc bỏ qua đó là ngôn ngữ cụ thể? –
Rất tốt Tuy nhiên, tôi đã bắt gặp nhiều tình huống hơn trong đó các xung đột của DATEFIRST là một vấn đề hơn là các tình huống xung đột ngôn ngữ là một vấn đề.Ví dụ, nếu bạn tạo một UDF trong cơ sở dữ liệu, bạn không thể xác định ngày đầu tiên trong UDF, bạn sẽ phụ thuộc vào truy vấn gọi hàm để đặt ngày giờ đầu tiên chính xác (hoặc không đặt ngày bắt đầu khác), tôi có nhiều khả năng người dùng sẽ cần phải thiết lập một datefirst khác hơn là thiết lập một ngôn ngữ khác (theo kinh nghiệm của tôi). – GarethD
Để xây dựng thêm, tôi đã từng làm việc trong một công ty nơi tuần lễ chạy thứ tư vào thứ ba để bán giấy và thứ Sáu đến thứ Năm cho Telesales, Chúng tôi có thể sử dụng cùng một truy vấn để báo cáo điều này bằng cách thiết lập ngày cho phù hợp, điều này sẽ được hiển thị bất kỳ việc sử dụng DATEPART (NGÀY, [ngày]) để xác định ngày cuối tuần vô dụng. Đây là lý do tại sao tôi ** thích ** để sử dụng datename. Tôi không bênh vực rằng nó hoàn hảo. – GarethD