Announcement

Collapse
No announcement yet.

Datums String ohne Jahr konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datums String ohne Jahr konvertieren

    Hallo Miteinander,
    Ich habe einen Datums String (Bsp. 29.06.) halb ohne Jahr und möchte das in ein Datum konvertieren. Das nomale CONVERT(DATETIME, '30.04.') bringt aber nur:

    Syntaxfehler beim Konvertieren einer Zeichenfolge in eine datetime-Zeichenfolge.

    Gibt es da eine andere Lösung? Wenn ja welche?

    Danke Bob

  • #2
    Hallo,

    vor dem CONVERT-Aufruf muss die Zeichenkette immer dann um die Jahresangabe ergänzt werden, wenn nur 5 Stellen vorgefunden werden:

    <div style="font-family: Courier New; font-size: 10pt; color: black; background: white; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt;"><p style="margin: 0px;"><span style="color: blue;">SET LANGUAGE </span>GERMAN;</p><p style="margin: 0px;"><span style="color: blue;">DECLARE </span>@datum <span style="color: blue;">VARCHAR</span>(10)</p><p style="margin: 0px;"><span style="color: blue;">SET </span>@datum = <span style="color: #a31515;">'27.02'</span></p><p style="margin: 0px;"><span style="color: blue;">IF </span>(LEN(@datum) = 5)</p><p style="margin: 0px;">&nbsp; <span style="color: blue;">BEGIN</span></p><p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">SELECT </span>@datum = @datum + <span style="color: #a31515;">'.2006'</span>;</p><p style="margin: 0px;">&nbsp; <span style="color: blue;">END</span></p><p style="margin: 0px;"><span style="color: blue;">PRINT </span>@datum</p><p style="margin: 0px;"><span style="color: blue;">SELECT CONVERT</span>(<span style="color: blue;">DATETIME</span>, @datum);</p></div>

    Die Implementierung kann in eine benutzerdefinierte Funktion (UDF) oder in eine gespeicherte Prozedur verpackt werden.

    Comment


    • #3
      Hallo bob,

      und da Du, glaube ich, das Jahr auch aus dem Text benötigst versuch doch mal folgendes, es ermittelt das Jahr aus Deinen Texten :

      Create Function dbo.Get_Jahr
      (@Text nvarchar(4000)) returns nchar(4)
      as
      begin
      Declare @i int; Set @i = len(@Text)-3
      Declare @iTmp int; Set @iTmp = 0
      Declare @Jahr nchar(4)

      while (1=1)
      begin
      Set @Jahr = null
      if @i < @iTmp break

      Set @Jahr = substring(@Text, @iTmp, 4)

      if isdate('01-01-' + @Jahr) = 1
      Break

      Set @iTmp = @iTmp + 1
      end
      Return @Jahr
      end
      GO

      declare @WoIstMeinJahr nvarchar(128); Set @WoIstMeinJahr = N'Termin vom 12.10.-15.10.2005 und irgendwas dahinter zum testen'

      select Testtext = @WoIstMeinJahr,
      Jahr = dbo.Get_Jahr(@WoIstMeinJahr)

      Comment

      Working...
      X