1. Arbeitstag des letzen Monats.

Snoopy1959

Benutzer
Beiträge
10
Hallo Zusammen,
weiss einer von Euch wie ich den SQL-Server in where Klausesl den 1 Arbeitstag des letzten Monats übergeben kann?

Den 1. Tag des letzten Monats habe ich gefunden
select CONVERT(varchar,dateadd(d,-(day(dateadd(m,-1,getdate()-2))),dateadd(m,-1,getdate()-1)),106)
 
Werbung:
Dazu im WHERE halt das Datum berechnen, wann der erste des Monats war, und auf den Wochentag prüfen. Notfalls 1 oder 2 addieren, also bei Sonntag oder Sonnabend, Mit PostgreSQL-Mitteln:

Code:
test=*# create table dates(d date);
CREATE TABLE
test=*# insert into dates select '2019-01-01'::date + s from generate_series(1,365) s;
INSERT 0 365
test=*# select * from dates where d = case when (extract('dow' from date_trunc('month',current_date - '1month'::interval))) = 6 then date_trunc('month',current_date - '1month'::interval)::date +2 when (extract('dow' from date_trunc('month',current_date - '1month'::interval))) = 7 then date_trunc('month',current_date - '1month'::interval)::date +1 else date_trunc('month',current_date - '1month'::interval)::date end;
     d     
------------
 2019-06-03
(1 row)

test=*#
 
Werbung:
Danke herzlich für die die Hilfe.
für T-SQL sieht es nun so aus

SELECT DATEPART(WEEKDAY,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)) as [Wochentag-Nr]
,case
when DATEPART(WEEKDAY,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)) = 7 then DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)+2
when DATEPART(WEEKDAY,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)) = 1 then DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)+1
Else DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)
end as [1.Arbeitstag des letzten Monats]

Gruss Snoopy
 
Zurück
Oben