Letzer Tag ermitteln
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Problem

Es kann sein dass der erste oder letzte Tag eines Monats ermittelt werden muss. Diese ist vor allem für Auswertungen wichtig. Da diese zum Teil für einen Monat aggregiert werden müssen.

 

 

 

Lösungen

-- Variable erstellen im Script
DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()

Letzter Tag des Vormonats

SELECT CONVERT (VARCHAR(25),DATEADD(dd,-(DAY(@mydate)),@mydate),101)

Erster Tag des aktuellen Monats

SELECT CONVERT VARCHAR (25),DATEADD(dd,-(DAY (@mydate)-1),@mydate),101) AS Date_Value

Letzter Tag des aktuellen Monats 

SELECT CONVERT VARCHAR (25),DATEADD(dd,-( DAY(DATEADD(mm,1,@mydate))), DATEADD(mm,1,@mydate)),101)

Erster Tag des nächsten Monats

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY (DATEADD(mm,1,@mydate))-1), DATEADD(mm,1,@mydate)),10

 

Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv

Problem

Datum und SQL-Server ist ein Thema für sich. Beim SQL Server wird das Datum immer mit einem Cast / Convert in ein neues Format gebracht, das Format kann aber nicht mit dd.mm.yyyy angegeben werden,
sondern mit Zahlen Codes.

Es gibt diverse Seiten die die genau Konvertierung zeigt, hier die wichtigsten für Deutsch und Englische SQL Server.

Weiter unten gibt es einen Link auf die Microsoft Seite mit allen Formatierungen.

 Aktuelle Sprache Deutsch

Format Beschreibung Ergebnis (9. märz 2000)
0 mon dd yyyy hh:miAM Mär 9 2000 6:40PM
100 mon dd yyyy hh:miAM Mär 9 2000 6:40PM
1 mm/dd/yy 03/09/00
101 mm/dd/yyyy 03/09/2000
2 yy.mm.dd 00.03.09
102 yyyy.mm.dd 2000.03.09
3 dd/mm/yy 09/03/00
103 dd/mm/yyyy 09/03/2000
4 dd.mm.yy 09.03.00
104 dd.mm.yyyy 09.03.2000
5 dd-mm-yy 09-03-00
105 dd-mm-yyyy 09-03-2000
6 dd mon yy 09 Mär 00
106 dd mon yyyy 09 Mär 2000
7 mon dd, yy Mär 09, 00
107 mon dd, yyyy Mär 09, 2000
8 hh:mm:ss 18:40:08
108 hh:mm:ss 18:40:08
9 mon dd yyyy hh:mi:ss:mmmAM Mär 9 2000 6:40:08:330PM
109 mon dd yyyy hh:mi:ss:mmmAM Mär 9 2000 6:40:08:330PM
10 mm-dd-yy 03-09-00
110 mm-dd-yyyy 03-09-2000
11 yy/mm/dd 00/03/09
111 yyyy/mm/dd 2000/03/09
12 yymmdd 000309
112 yyyymmdd 20000309
13 dd mon yyyy hh:mi:ss:mmm 09 Mär 2000 18:40:08:330
113 dd mon yyyy hh:mi:ss:mmm 09 Mär 2000 18:40:08:330
14 hh:mi:ss:mmm 18:40:08:330
114 hh:mi:ss:mmm 18:40:08:330
20 yyyy-mm-dd hh:mi:ss 2000-03-09 18:40:08
120 yyyy-mm-dd hh:mi:ss 2000-03-09 18:40:08
21 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:40:08.330
121 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:40:08.330

Aktuelle Sprache English

Format Beschreibung Ergebnis (9. märz 2000)
0 mon dd yyyy hh:miAM Mar 9 2000 6:46PM
100 mon dd yyyy hh:miAM Mar 9 2000 6:46PM
1 mm/dd/yy 03/09/00
101 mm/dd/yyyy 03/09/2000
2 yy.mm.dd 00.03.09
102 yyyy.mm.dd 2000.03.09
3 dd/mm/yy 09/03/00
103 dd/mm/yyyy 09/03/2000
4 dd.mm.yy 09.03.00
104 dd.mm.yyyy 09.03.2000
5 dd-mm-yy 09-03-00
105 dd-mm-yyyy 09-03-2000
6 dd mon yy 09 Mar 00
106 dd mon yyyy 09 Mar 2000
7 mon dd, yy Mar 09, 00
107 mon dd, yyyy Mar 09, 2000
8 hh:mm:ss 18:46:58
108 hh:mm:ss 18:46:58
9 mon dd yyyy hh:mi:ss:mmmAM Mar 9 2000 6:46:58:220PM
109 mon dd yyyy hh:mi:ss:mmmAM Mar 9 2000 6:46:58:220PM
10 mm-dd-yy 03-09-00
110 mm-dd-yyyy 03-09-2000
11 yy/mm/dd 00/03/09
111 yyyy/mm/dd 2000/03/09
12 yymmdd 000309
112 yyyymmdd 20000309
13 dd mon yyyy hh:mi:ss:mmm 09 Mar 2000 18:46:58:220
113 dd mon yyyy hh:mi:ss:mmm 09 Mar 2000 18:46:58:220
14 hh:mi:ss:mmm 18:46:58:220
114 hh:mi:ss:mmm 18:46:58:220
20 yyyy-mm-dd hh:mi:ss 2000-03-09 18:46:58
120 yyyy-mm-dd hh:mi:ss 2000-03-09 18:46:58
21 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:46:58.220
121 yyyy-mm-dd hh:mi:ss.mmm 2000-03-09 18:46:58.220

 Etwas spezieller Formatierungen 

Wenn das Datum mit dem Format YYYYMMDD geliefert wird

Speziell wird es wenn das Datum YYYYMMDD geliefert wird, das kann mit Standards gelöst werden aber etwas umständlicher. Hier eine Lösung für das Problem

CAST(CONVERT(VARCHAR(10), stupid_date, 112)   AS DATE)

 

Nützliche Funktionen für Datums-Berechnungen

Funktion Beschreibung
getdate() Gibt das aktuelle System Datum und Zeit aus als Timstamp, den Einstellungen entsprechendem Format.
Day

Gibt den Tag des Datums aus

Day(Datum)

Month

Gibt den Monat eines Datums aus

Month(Datum)

Year

Gibt das Jahr eines Monats aus

YEAR(datum)

DATEFROMPARTS

Gibt ein Datum aus, aus den Teilen des Datums

DATEFROMPARTS ( yearmonthday )

DATEDIFF

Differenz zwischen zwei Datum berechnen in der Einheit die in Datepart erfasst wird. Ausgabe ist immer ein Interger Wert!

DATEDIFF ( datepartstartdate , enddate)

 

DATEADD

Einen Wert zum Datum hinzufügen

DATEADD (datepartnumber , date )

number kann auch negativ sein, wenn die 

EOMONTH

Ende des Monats

EOMONTH ( start_date [, month_to_add ] )

month_to_add können auch negativ sein!

 Weitere Datums-Formatierungen sind unter 

https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql 

Was ist ein Datepart

In einigen Formatierungen wird von einem datepart gesprochen. Dabei geht es um den Teil des Datums der ausgegeben werden soll oder der zur Berechnung verwendet werden soll. Mögliche Werte für Datepart sind in der Tabelle unten aufgelistet. Die Liste ist nicht abschliessend.

datepart Abkürzungen
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww
Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv

Virtualbox virtualisert alle OS auch Windows auf Windows.

Aber nach der Installation ist der Vollbild Modus nicht möglich, auch der Shared Folder geht nicht.

Dazu kommt das nur USB 1.1 unterstützt wird. 

Damit das alles geht, muss nach der Installation vom Guest System noch die Additional Tools für VirtualBox installiert werden.

Diese werden mit der aktuellen Version 5.2.2 mitgeliefert und können im Guest System nach geladen werden.

Nun ist die Frage wie das geht, dies wird hier erklärt.

Wie wird gemacht Schritt für Schritt Anleitung

  1. Starten der VM Instanz
  2. Im Menü Geräte den Menüpunkt Geräteerweiterung einlegen wählen
    (Dadurch wird das ISO Image geladen)
  3. Entweder per Autostart oder im File-Explorer auf das neue CD-Rom wechseln und die Installation starten mit VBoxWindowsAdditions.exe
    (Unter Linux wird die Datei anders heissen, sollte aber gleich gehen)
  4. Das war es, ab jetzt kann auch der Vollbild Modus genutzt werden

Viel Spass beim Testen.