![]() |
Datenbank: FB 1.5 • Zugriff über: blubb
[SQL]Tag + Monat in Date umwandeln ?
Hi,
ich habe hier einen Monat und das Jahr (Tag interessiert nicht). Die DB erwartet aber ein Date. Wie baue ich daraus jetzt ein Date ? |
Re: [SQL]Tag + Monat in Date umwandeln ?
Mit EncodeDate:
Delphi-Quellcode:
var
datum: TDateTime; jahr, monat : integer; begin jahr := ... Monat := ... datum := EncodeDate(jahr, monat, 1), end; |
Re: [SQL]Tag + Monat in Date umwandeln ?
Man kann aus einem Monat und einem Jahr nun mal kein Datum erzeugen. Dir fehlt der Tag. Irgendeiner. Ich nehm den ersten.
Dann so (kenn kein Firebird, aber der kann ja wohl convert) in MSSQL:
Delphi-Quellcode:
Convert dürfte ANSI-SQL sein, der dritte Parameter (101) sagt MSSQL, das das Datum in der From 'mm/dd/yyyy' formartiert ist. Irgendsowas gibt es doch auch bei FB-SQL. Und, konvertiert der nicht von alleine, sobald Du versuchst in ein Date-Feld einen String reinzuschreiben, der nach Datum riecht?
declare @month int, @year int
set @month = 10 set @year = 2005 select convert (datetime, convert (varchar(2), @month)+'/01/'+convert (varchar(4), @year),101) |
Re: [SQL]Tag + Monat in Date umwandeln ?
Thx, aber ich bräuchte die reinen SQL-Befehle. Ah, roter Kasten schlägt zu. :mrgreen: Convert ? Müßte es wohl sein.
|
Re: [SQL]Tag + Monat in Date umwandeln ?
Sorry, Convert scheint es nicht zu sein. Zumindest finde ich da nix drüber. Vielleicht etwas genauer : brauche praktisch das Gegenstück zu
SQL-Code:
Ich habe also Tag (halt 1) und Monat und Jahr und das soll ein DATE werden.
EXTRACT DAY FROM DATEFELD
|
Re: [SQL]Tag + Monat in Date umwandeln ?
Hier ist eine interessante Seite :
![]() Die ist echt Top und noch von Landsmann. :thumb: Hehe, da sind sogar die "Heiligen Drei Koenige" drin ! Ist wohl ein Bayer. :mrgreen: Jetzt ist aber folgende Frage aufgetaucht :
SQL-Code:
Das funktioniert auch, aber das hier nicht :
CREATE PROCEDURE PROC_ENCODEDATE (
AYEAR INTEGER, AMONTH INTEGER, ADAY INTEGER) RETURNS ( RESULT DATE) AS BEGIN Result = cast( ADay || '.' || AMonth || '.' || AYear as DATE); suspend; END ^
SQL-Code:
Was ist daran falsch ?
CAST ('20.08.2005' AS DATE);
|
Re: [SQL]Tag + Monat in Date umwandeln ?
Hallo Hansa,
Zitat:
Zitat:
Grüße vom marabu |
Re: [SQL]Tag + Monat in Date umwandeln ?
Falsch ist daran gar nichts. Der Fehler lag in dem aufrufenden Programm und da waren 2 Parameter vertauscht. 8) Geht echt verblüffend einfach mit Firebird, wenn man weiß wie. :mrgreen:
|
Re: [SQL]Tag + Monat in Date umwandeln ?
Noch ein Fehler :
SQL-Code:
das geht ja so, aber das hier :
CAST ('12.08.2005' as DATE)
SQL-Code:
geht nicht ! "Data type unknown." Der feste Wert nützt mich ja da nichts. 8) Was ist noch zu tun ?
CAST (:DATUM as DATE)
|
Re: [SQL]Tag + Monat in Date umwandeln ?
Na, dann setze doch den Datentyp, bevor du das statement zur Ausführung bringst, Hansa.
Delphi-Quellcode:
Oder verzichte ganz auf den CAST im SQL und mache ihn gleich im Programm.
query.Parameters.ParamByName('DATUM').DataType := ftString;
marabu PS: Kennst du das alte Lied Ein Loch ist im Eimer...? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz