Come impostare una variabile DateTime SQL Server 2008?

SQL Server 2008 non fa quello che mi aspettavo con DateTime. Che non mi permette di impostare DateTime variabili, non importa quale formato di data che uso io.

Quando eseguo:

DECLARE @Test AS DATETIME
SET @Test = 2011-02-15
PRINT @Test

Ottenere un output di:

Jun 18 1905 12:00AM

Ho controllato tutte le impostazioni internazionali che posso trovare & tutto sembra ok. Ho provato anche impostando il DateTime per vari letterale alternative, come ’15/02/2011′, ‘2011-02-15 00:00:00’, ecc.

InformationsquelleAutor Bob | 2011-08-25

 

7 Replies
  1. 35

    È necessario allegare la data e l’ora valore tra virgolette:

    DECLARE @Test AS DATETIME 
    
    SET @Test = '2011-02-15'
    
    PRINT @Test
    • Se si posta del codice, XML o campioni di dati, preghiamo evidenziare quelle linee l’editor di testo e fare clic su “esempi di codice” pulsante ( { } ) sulla barra degli strumenti dell’editor di ben formato e la sintassi evidenziarlo!
  2. 15

    Prima di tutto – utilizzare virgolette intorno alla vostra data di valori letterali!

    In secondo luogo, vi raccomandiamo vivamente di utilizzare sempre la ISO-8601 formato data – questo funziona indipendentemente da ciò che il vostro locale, regionale o impostazioni di lingua in SQL Server.

    Il ISO-8601 è:

    • YYYYMMDD per date solo (ad esempio 20110825 per il 25 agosto, 2011)
    • YYYY-MM-DDTHH:MM:SS per le date e del tempo (ad esempio 2011-08-25T14:15:00 per il 25 di agosto, 14:15/2:15 nel pomeriggio)
  3. 6

    2011-01-15 = 2011-16 = 1995. Questo è quindi implicitamente convertito da un intero a una data, dando la 1995th giorno, a partire dal 1 ° gennaio 1900.

    È necessario utilizzare SET @test = '2011-02-15'

    • Fresco, grazie Dem. Pensavo di fare qualcosa di stupido!
  4. 6

    Provare a utilizzare Selezionare invece di Stampare

    DECLARE @Test AS DATETIME 
    
    SET @Test = '2011-02-15'
    
    Select @Test
  5. 4

    Solo per spiegare:

    2011-02-15 viene interpretato letteralmente come un’operazione matematica, la cui risposta è 1994.

    Questo, poi, viene interpretato come il 1994 giorni dall’origine della data (1 Gen 1900).

    1994 giorni = 5 anni, 6 mesi, 18 giorni = 18 giugno 1905

    Così, se non si desidera per il calcolo ogni volta che si desidera confrontare una data per un particolare valore standard: Confrontare il valore del toString() funzione di oggetto data la stringa come questa :

    set @TEST  ='2011-02-05'
  6. 1
     1. I create new Date() and convert her in String .
     2. This string I set in insert.
    
     **Example:**  insert into newDate(date_create) VALUES (?)";
    
     ...
     PreparedStatement ps = con.prepareStatement(CREATE))
            ps.setString(1, getData());
            ps.executeUpdate();
      ...}
    
       private String getData() {
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd hh:mm:ss");
         return  sdf.format(new java.util.Date());
        }
    
     **It is very important format** = "yyyy-M-dd hh:mm:ss"

Lascia un commento