Mam pakiet ssis, który działa w dniach roboczych (pon-pt). jeśli otrzymam plik we wtorek, tło (DB), zajmuje on poprzednią datę dnia i wykonuje pewne transakcje. Jeśli pracuję w piątek, musi on pobrać datę poniedziałku i przetworzyć transakcje.Jak uzyskać poprzedni dzień roboczy w ciągu tygodnia z bieżącym dniem roboczym przy użyciu serwera sql
Użyłem poniższego zapytania dostać poprzedni dzień Business
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
jeśli mogę wykonać to zapytanie będę dostać wyniki wczorajszych Transactios. jeśli uruchomiłem to samo zapytanie w poniedziałek, musi on pobrać transakcje w piątek zamiast w niedziele.
Używanie 'DATENAME', aby uniknąć konieczności znajomości' DATEFIRST', ale kończąc ignorowanie, że jest to specyficzne dla języka? –
Bardzo dobrze Jednak natknąłem się na więcej scenariuszy, w których konflikty DATEFIRST były problemem niż scenariusze, w których konflikt językowy był problemem.Na przykład, jeśli utworzyłeś UDF w bazie danych, nie możesz zdefiniować daty jako pierwszej w UDF, byłbyś zależny od zapytania wywołującego funkcję, aby ustawić poprawną datę (lub nie ustawiając innej daty), to s bardziej prawdopodobne, że użytkownik będzie musiał ustawić inną datę, niż ustawić inny język (według mojego doświadczenia). – GarethD
celu dalszego dopracowania, kiedyś pracować w firmie, w której komisja tygodni biegnie środy do wtorku do sprzedaży papieru, a od piątku do znaleźć wady dla telesprzedaży, możemy używać tych samych zapytań zgłosić na to przez ustawienie DATEFIRST odpowiednio, to uczyniłoby dowolne użycie DATEPART (DZIEŃ, [data]) w celu oznaczenia bezużytecznych weekendów. Właśnie dlatego ** wolę ** używać nazwy. Nie twierdzę, że jest bezbłędny. – GarethD