roga Geschrieben 18. November 2003 Teilen Geschrieben 18. November 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
just_me Geschrieben 18. November 2003 Teilen Geschrieben 18. November 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
roga Geschrieben 18. November 2003 Autor Teilen Geschrieben 18. November 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
just_me Geschrieben 18. November 2003 Teilen Geschrieben 18. November 2003 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 FunktionCREATE 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-StatementSELECT [id], [dbo].convertkw([spalteVon]) AS zahlFormatiert FROM tabelleDas war's schon. Jedoch ist es sicherlich nicht der optimale Weg. Doch dazu fehlen spezifische Angaben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
roga Geschrieben 19. November 2003 Autor Teilen Geschrieben 19. November 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
just_me Geschrieben 19. November 2003 Teilen Geschrieben 19. November 2003 Deutsches Fragewort, das mit "H" beginnt: Hääääääääääää?... und dieses diese funktion wieder nicht kennen magDas 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 19. November 2003 Teilen Geschrieben 19. November 2003 setzt du den sql aus einem script ab? vielleicht php? wenn ja könntest du mit str_pad weiterkommen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.