- Zugriffe: 1481
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
- Zugriffe: 2185
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 ( year, month, day ) |
DATEDIFF |
Differenz zwischen zwei Datum berechnen in der Einheit die in Datepart erfasst wird. Ausgabe ist immer ein Interger Wert! DATEDIFF ( datepart, startdate , enddate)
|
DATEADD |
Einen Wert zum Datum hinzufügen DATEADD (datepart, number , 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
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 |
- Zugriffe: 1565
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
- Starten der VM Instanz
- Im Menü Geräte den Menüpunkt Geräteerweiterung einlegen wählen
(Dadurch wird das ISO Image geladen) - 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) - Das war es, ab jetzt kann auch der Vollbild Modus genutzt werden
Viel Spass beim Testen.