Tag: "datum"

Erster und letzter Tag eines Jahres

Posted on Jul 13, 2004 von in SQL Server
DECLARE @dt DATETIME
SET @dt = GETDATE()
SELECT
CAST(CAST(YEAR(@dt) AS CHAR(4))+'0101' AS DATETIME)
AS Jahresanfang
, CAST(CAST(YEAR(@dt) AS CHAR(4))+'-12-31T23:59:59.997' AS DATETIME)
AS Jahresende

Jahresanfang Jahresende
------------------------------------------------------ ------------------------
2004-01-01 00:00:00.000 2004-12-31 23:59:59.997

(1 row(s) affected)

Ganze Geschichte »

Tage eines Monats

Posted on Jul 13, 2004 von in SQL Server
DECLARE @d DATETIME
SET @d = '31/01/2003 12:00:00'
SELECT
DAY(DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DAY(@d),@d)))) AS TageImMonat

TageImMonat
-----------
31

(1 row(s) affected)

Bei der Wahl des Datumsformat muss man vorsichtig sein. So funktionieren zum Beispiel:

SET @d = '20030131 12:00:00'

und

SET @d = '31.01.2003 12:00:00'

während

SET @d = '2003-01-31 12:00:00'

Server: Nachr.-Nr. 242, Schweregrad 16, Status 3, Zeile 2
Bei der Konvertierung ... char-Datentyps in ... datetime-Datentyp ... außerhalb des gültigen Bereichs.

hervorruft.

Ganze Geschichte »

Der Datumsbereich des SQL Servers

Posted on Jul 13, 2004 von in SQL Server
Select
Cast(-53690 As DateTime) As 'Erstes Datum'
, Cast(2958463.999999999 As DateTime) As 'Letztes Datum'

Erstes Datum Letztes Datum
------------------------- -------------------------
1753-01-01 00:00:00.000 9999-12-31 23:59:59.997

(1 row(s) affected)

Ganze Geschichte »

Erster und letzter Tag des Folgemonats

Posted on Jul 12, 2004 von in SQL Server
SELECT 
CONVERT(CHAR(6),DATEADD(MONTH, 1, GETDATE()),112)
+
'01' AS 'firstDayofNextMonth'
, CONVERT(CHAR(8),DATEADD(day, -1, CONVERT(CHAR(6),DATEADD(MONTH, 2, GETDATE()),112)
+
'01'),112) AS 'lastDayofNextMonth'

firstDayofNextMonth lastDayofNextMonth
------------------- ------------------
20040701 20040731

(1 row(s) affected)

Ergänzung 17.11.2004: Das Ganze kann aber auch folgendermaßen ausgedrückt werden:

SELECT 
DATEADD(MONTH,DATEDIFF(MONTH,30,GETDATE()),30)+1
, DATEADD(MONTH,DATEDIFF(MONTH,30,GETDATE())+1,30)


------------------------- ------------------------
2004-12-01 00:00:00.000 2004-12-31 00:00:00.000

(1 row(s) affected)

Zeit aus einer DATETIME Spalte entfernen

Posted on Jul 12, 2004 von in SQL Server

Der Datetime Datentyp, so wie er im SQL Server 2000 und früher implementiert ist, enthält immer einen Zeitpart. Somit ist der Titel dieses Beitrages evtl. etwas irreführend. Dieser Zeitanteil kann jedoch auf Mitternacht gesetzt werden, somit faktisch = 0, und wirkt sich damit nicht weiter störend aus.
Hier sind einige Beispiel, wie dies erreicht werden kann:

Ganze Geschichte »

Ersten Tag einer Woche ermitteln

Posted on Jul 12, 2004 von in SQL Server

Angenommen, wir definieren den Sonntag als ersten Tag der Woche

Ganze Geschichte »

Anzahl von Tagen zwischen zwei Daten

Posted on Jul 12, 2004 von in SQL Server
USE pubs
GO
SELECT
DATEDIFF(DAY, pubdate, GETDATE()) AS Anzahl_Tage
FROM
titles
GO

Anzahl_Tage
-----------
4761
4764
4743
4751
4764
4755
1418
4743
3665
1418
4630
4758
4646
4761
4761
4630
4761
4761

(18 row(s) affected)

Datumsteile extrahieren

Posted on Jul 12, 2004 von in SQL Server
SELECT
DATEPART(yy , GETDATE()) AS Jahr
, DATEPART(qq , GETDATE()) AS Quartal
, DATEPART(mm , GETDATE()) AS Monat
, DATEPART(dd , GETDATE()) AS Tag
, DATEPART(hh , GETDATE()) AS Stunden
, DATEPART(mi , GETDATE()) AS Minuten
, DATEPART(ss , GETDATE()) AS Sekunden
, DATEPART(ms , GETDATE()) AS Millisekunden
, DATEPART(wk , GETDATE()) AS Woche


Jahr Quartal Monat Tag Stunden Minuten Sekunden Millisekunden Woche
--------- --------- --------- --------- --------- --------- --------- ------------- -----
2004 2 6 23 11 23 59 513 26

(1 row(s) affected)

Weitere Informationen stehen in BOL.