SQL SQL Befehl in Tabelle eintragen und bei Bedarf ausführen

D0c_cR4Zy

Lieutenant
Dabei seit
Feb. 2007
Beiträge
569
Moin,

ich habe in einer Tabelle in einer Zelle den Wert
Code:
convert(varchar, getdate(), 112)
eingetragen mit TYP "Tagesdatum".

Nun möchte ich gegen diesen Wert vergleichen. Das klappt allerdings nicht.
Code:
Select * from Tabelle Where (CONVERT(varchar, Wert aus beliebiger Tabelle, 112)) > (Select WERT from Referenztabelle where TYP = 'Tagesdatum')
Ist es nicht möglich das so zu realisieren?

Schreibe ich das ganze direkt in die Syntax
Code:
Select * from Tabelle Where (CONVERT(varchar, Wert aus beliebiger Tabelle, 112)) > (convert(varchar, getdate(), 112))
funktioniert es problemlos.

Jemand eine Idee?

CYA_D0c
 

D0c_cR4Zy

Lieutenant
Ersteller dieses Themas
Dabei seit
Feb. 2007
Beiträge
569
Moin,

Vielen Dank.

Kannst du mir interessehalber ein paar Gründe nennen?

CYA_D0C
 

Andreas_

Lt. Commander
Dabei seit
Jan. 2017
Beiträge
1.470
Wegen dem Convert vermute ich mal, dass Du den Microsoft SQL-Server benutzt. Dort gibt es
sp_executesql bzw. Execute. Dynamisch generiertes SQL hat den Nachteil, dass der Server diese Statements weder Cachen noch im vollen Umfang optimieren kann.
 
Zuletzt bearbeitet: (Execute ergänzt)

ayngush

Lt. Commander
Dabei seit
Okt. 2007
Beiträge
1.118
SQL:
CREATE  function [dbo].[GetIsoDate]()
RETURNS char(8)
AS

BEGIN
    RETURN (SELECT CONVERT(char(8), Getdate(), 112))
END
So benutzen:

SQL:
select * from [table] where convert(char(8), [datumswert], 112) > dbo.GetIsoDate()
Bitteschön
 
Zuletzt bearbeitet:
Top