Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL GetDate() nur Datumsanteil extrahieren (https://www.delphipraxis.net/61248-sql-getdate-nur-datumsanteil-extrahieren.html)

Ferber 18. Jan 2006 20:19

Datenbank: MSDE • Zugriff über: ADO / Access

SQL GetDate() nur Datumsanteil extrahieren
 
GetDate() liefert Datum und Zeit.
Ich will aber keinen Zeitanteil sondern nur das Datum.
Hab's mit CAST, CONVERT, DATEPART versucht, nix geht..
Von diesem Link http://sqlzoo.net/howto/source/z.dir...4148/sqlserver hab ich folgendes:
SQL-Code:
SELECT DATEPART(yyyy, GETDATE())*10000
      +DATEPART(mm,GETDATE())*100
      +DATEPART(d, GETDATE())
funzt auch nicht mit Variablen.
set @Datum=GetDate() -> '18.01.06 20:53:00' -> will ich nicht.
Wenn ich die Datei mit Access ansehe soll dort nur '18.01.06' stehen.
Jemand ne Idee :?:

Hab noch herumgebastelt. So geht's:
SQL-Code:
set @aDate = Convert(dateTime,
                       Convert(varchar, day(GetDate())) +'.'+
                       Convert(varchar, Month(GetDate()))+'.'+
                       Convert(varchar, Year(GetDate()))
                     )
Also zuerst das Datum als String basteln, dann in Datum Konvertieren.
Geht das nicht irgendwie einfacher :?:

alzaimar 18. Jan 2006 20:23

Re: SQL GetDate() nur Datumsanteil extrahieren
 
So gehts auch
SQL-Code:
select cast (cast (getdate() as int) as dateTime)

Ferber 18. Jan 2006 20:31

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Ups - das ging aber schnell ! :)

Zitat:

Zitat von alzaimar
So gehts auch
SQL-Code:
select cast (cast (getdate() as int) as dateTime)

Da wird Heute der 19. und nicht der 18. draus.
Hab mal dieses versucht:
SQL-Code:
select cast (cast (getdate() as int)-1 as dateTime)
Beim nochmaligen 'ZurückCasten' steht die Zeit auf 12:00.
Könnte das irgendwelche Probleme bereiten ?

alzaimar 18. Jan 2006 20:43

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Mein Name ist Programm: :mrgreen:
Ich hab das eben woanders gelesen, ich mach es immer so:
SQL-Code:
select cast (floor (cast (getdate() as float)) as dateTime)
Das "cast (GetDate() as Int)" scheint aufzurunden ...

Ferber 18. Jan 2006 20:52

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Zitat:

Zitat von alzaimar
SQL-Code:
select cast (floor (cast (getdate() as float)) as dateTime)

Ja super, das ist perfekt :hello:

Jelly 18. Jan 2006 22:08

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Ich habe dazu folgendes Statement:
SQL-Code:
Convert(datetime,convert(char(10),@Date,120))
das auch wunderbar klappt...

Was von beiden Varianten ist denn schneller ?

PS: Übrigens, da man eine solche Funktion eventuell öfters braucht, hab ich mir das Ganze in eine Funktion geschmissen..

SQL-Code:
CREATE FUNCTION [dbo].[Datum] (@Date datetime)
RETURNS datetime AS
BEGIN
    return Convert(datetime,convert(char(10),@Date,120))
END
Der Aufruf ist dann ganz simpel:
SQL-Code:
select dbo.Datum(getdate())

Elvis 19. Jan 2006 02:02

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Zitat:

Zitat von Jelly
Ich habe dazu folgendes Statement:
SQL-Code:
Convert(datetime,convert(char(10),@Date,120))
das auch wunderbar klappt...
Was von beiden Varianten ist denn schneller ?

Ich glaube das hin-und her parsing in einen String und wieder heraus hat nix mehr mit schnell zu tun. ;)
Ich bin ein freiwilliger TSQL-DAU, also kann ich nur in die Runde werfen, ob es in TSQL ein Gegenstück zu oracles trunc gibt? :duck:

mikhal 19. Jan 2006 06:55

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Ich habe da noch eine Variante:
SQL-Code:
convert(varchar, GetDate(), 104)
104 steht für Deutsches Format mit vierstelligem Jahr (siehe auch TSQL Online-Hilfe).

Grüße
Mikhal

alzaimar 19. Jan 2006 07:04

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Zitat:

Zitat von Elvis
... ob es in TSQL ein Gegenstück zu oracles trunc gibt? :duck:

SQL-Code:
floor
Statt sich drauf zu verlassen, das der Datumsanteil in den ersten 10 Zeichen steht, kann man auch in irgendein Format konvertieren, das nur das Datum anzeigt, und dann wieder zurück, so z.B.:
SQL-Code:
select Convert(datetime,convert(char,getdate(),110))
@mikal: Deine Variante liefert ein VarChar, und kein DateTime.

mikhal 19. Jan 2006 07:21

Re: SQL GetDate() nur Datumsanteil extrahieren
 
@alzaimar: Das ist richtig, aber letzlich stört sich Ferber doch nur an der Darstellung, oder?

Ferber 19. Jan 2006 08:01

Re: SQL GetDate() nur Datumsanteil extrahieren
 
Wiedereinmal herzlichen Dank an das Forum. :angel:
Hier gibt's Leut die sich wirklich auskennen und sich auch noch die Mühe machen Fragen zu beantworten.
Um mit KIKA zu sprechen: 'Ich find das Super' :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz