Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [T-SQL] Problemi con GETDATE()

    Buongiorno.

    Devo creare una funzione definita dall'utente in SQL Server 2000.
    Mi serve che la funzione, alla quale non passo alcun parametro, mi restituisca la data in formato AAAAMMSS come varchar(8).
    Io ho provato col codice:

    CREATE FUNCTION dataNow()
    RETURNS varchar(8)
    AS
    BEGIN
    declare @hData varchar(8)
    set @hData = CAST(YEAR(GETDATE()) AS varchar(8)) + CAST(month(GETDATE()) AS varchar(2)) + CAST(day(GETDATE()) AS varchar(2))
    return @hData
    end

    Tuttavia il controllore sintattico di SQL Server si arrabbia dicendomi:

    Errore 443: utilizzo non valido di getdate in una funzione.
    Qualche suggerimento?

    Grazie.

    Fedrok
    Corsi di Shiatsu a Brescia? Corso di Shiatsu a Brescia?
    ____________________________________
    Visto che la luce viaggia piu' veloce del suono, sara' per questo che molte persone appaiono brillanti finchè non le senti parlare?

  2. #2

    Forse...

    Non so se funziona (non conosco molto bene Transact SQL) ma forse esiste la funzione Now() che puoi usare al posto di getdate.



    Ciao
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  3. #3

    Trovato!

    Now() non esiste in T-SQL.
    In compenso ho scoperto che non si possono usare le funzioni non deterministiche (GETDATE()lo è!) all'interno delle funzioni definite dall'utente.

    Quindi devo per forza passare la date attuale alla funzione dal codice chiamante.


    Risolto.

    Fedrok
    Corsi di Shiatsu a Brescia? Corso di Shiatsu a Brescia?
    ____________________________________
    Visto che la luce viaggia piu' veloce del suono, sara' per questo che molte persone appaiono brillanti finchè non le senti parlare?

  4. #4

    Se servisse a qualcuno...

    ...il codice corretto è il seguente:

    /*
    Riceve come parametro una data in formato datetime e restituisce la stessa in formato AAAAMMGG come char(8).
    */

    CREATE FUNCTION date2char(@dataPar as datetime)
    RETURNS char(8)
    AS
    BEGIN
    declare @hData varchar(8)
    set @hData = CAST(YEAR(@dataPar) AS char(4)) + right('0' + CAST(month(@dataPar) AS varchar(2)) ,2) + right('0' + CAST(day(@dataPar) AS varchar(2)) ,2)
    return cast(@hData as char(8))
    end

    Fedrok
    Corsi di Shiatsu a Brescia? Corso di Shiatsu a Brescia?
    ____________________________________
    Visto che la luce viaggia piu' veloce del suono, sara' per questo che molte persone appaiono brillanti finchè non le senti parlare?

  5. #5
    cos'?
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Questo a qualcuno serve sicuramente:
    http://forum.html.it/forum/showthrea...hreadid=588640
    Slack? Smack!

  7. #7

    Re: Se servisse a qualcuno...

    Originariamente inviato da fedrok
    ...il codice corretto è il seguente:
    (magola-maga-magia)
    volevi postarlo qua... vero?
    ...Terrible warlords, good warlords, and an english song

  8. #8

    Sì!

    Grazie!

    Avevo già segnalato a LadyBlu l'errore.

    Fedrok
    Corsi di Shiatsu a Brescia? Corso di Shiatsu a Brescia?
    ____________________________________
    Visto che la luce viaggia piu' veloce del suono, sara' per questo che molte persone appaiono brillanti finchè non le senti parlare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.