Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

zahlen formatiert aus sql-abfrage

Empfohlene Antworten

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

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.

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

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.

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

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?

setzt du den sql aus einem script ab? vielleicht php?

wenn ja könntest du mit str_pad weiterkommen

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.