Zum Inhalt springen

zahlen formatiert aus sql-abfrage


roga

Empfohlene Beiträge

hallo,

habe eine einfache frage, wo ich aber einfach nicht draufkomme.

möchte von einem datum die kalenderwoche als zweistellige zahl zurückbekommen

das ganze von einem sql-server2000 direkt in einer abfrage

beispiel:

select DATENAME(week, '4/1/2004')

ergebnis=2

ich hätte da aber gerne als ergebnis=02

wie schaffe ich das jetzt???

danke für die hilfe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eigentlich gibt es da die erweiterte Systemprozedur 'xp_sprintf', die Formatierungen vornehmen kann, doch hier denke ich, damit würden wir mit Kanonen auf Spatzen schießen. Probiere doch mal:


IF (datepart(week, '4/1/2004') < 10) 

PRINT '0'+CONVERT(char(1), datepart(week, '4/1/2004')) 

ELSE PRINT datepart(week, '4/1/2004')

Sicher nicht sehr elegant, aber schnell und funktional.

Oh, und DATENAME ist dafür vorgesehen, die Namen der Entsprechungen zurückzugeben. Die "missbräuchliche" Verwendung kann zu unvorhergesehenen Ergebnissen führen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo,

danke für die rasche antwort, doch leider funktioniert das in meiner abfrage nicht.

wie kann das ganze jetzt noch so eingebaut werden

select *,datepart(week, spalteVon) as zahlFormatiert

from tabelle

tabelle:

id spalteVon

1 4/1/2004

2 10/2/2004

3 ...

.........

ergebnis:

1 01

2 07

3....

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tjaaaaaa... :)

Da ihr euch leider immer wieder über die näheren Umstände ausschweigt, ist es natürlich schwierig, die effizienteste Lösung zu 'raten'. (In des Wortes doppelter Bedeutung.)

Ich prädestiniere hier die Verwendung einer Funktion. Zum Einen wird dadurch das Statement übersichtlicher, zum Anderen überlassen wir die Ausführung dem Server und entlasten durch die 'innerbetriebliche Optimierung' die Transferkosten.

Schritt 1: Erstellen der Funktion

CREATE FUNCTION [dbo].convertkw (@datum DATETIME)

RETURNS CHAR(2)

AS

BEGIN

DECLARE @kw CHAR(2)

IF (DATEPART(WEEK, @datum) < 10) 

SET @kw='0'+CONVERT(CHAR(1), DATEPART(WEEK, @datum)) 

ELSE SET @kw=DATEPART(WEEK, @datum)

RETURN @kw

END
Die Funktion ist selbsterklärend. Schritt 2: Das SQL-Statement
SELECT [id], [dbo].convertkw([spalteVon]) AS zahlFormatiert

FROM tabelle

Das war's schon.

Jedoch ist es sicherlich nicht der optimale Weg. Doch dazu fehlen spezifische Angaben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ach ja, das mit den spezifischen angaben ist so ne sache,:confused:

also, die antworten funktionieren für sich alle doch bei meinem spezifischen problem wieder einmal nicht. der grund dafür liegt jetzt wieder darin, das die abfrage von einem php-script aufgerufen wird und dieses diese funktion wieder nicht kennen mag:floet:

also ich kann es kaum glauben, das es im sql nicht möglich ist mit einem befehl eine zahl zu formatieren, vielleicht hat das datum und die KW etwas vom kernproblem abgelenkt.

also es sollte eine zahl immer zweistellig zurückgegeben werden, in access wäre das mit

select format(spalte,"00") from tabelle eine einfache übung doch wie ist das in sql, muss doch etwas vergleichbares vorhanden sein???

:beagolisc

gruß rg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Deutsches Fragewort, das mit "H" beginnt: Hääääääääääää?

... und dieses diese funktion wieder nicht kennen mag
Das meinst du jetzt wie?

Ich bin davon ausgegangen, dass du das SQL-statement gegen einen SQL-Server laufen lässt. Irre ich? Oder hast du keinen Zugriff auf diesen Server? Keine Rechte? Woran liegt's?

Zurück zum Problem: Wie ich eingangs schon sagte, gibt es da eine erweiterte Systemprozedur, die diese Formatierung ebenfalls erledigt. Da es sich jedoch um eine externe "Anwendung" handelt, werden enorme zusätzliche Systembelastungen die Folge sein. Und auch dein Access-Beispiel "FORMAT(var, [FormatString]) ist nichts anderes als der Aufruf einer Funktion. Was also ist das Problem mit einer eigenen optimierten Funktion?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...