2010-11-02 17 views
5

È possibile creare una data utilizzando SQL Server 2005?SQL Server create date

Esempio se ho anno = 2010, mese = 11 e giorno = 2, come posso convertirlo o crearlo in datetime?

Di seguito è se lo scriviamo in javascript

var date = new Date(2010, 10, 2, 0, 0, 0, 0); 

e questo è con Oracle

SELECT TO_DATE('2010-11-02', 'YYYY-MM-DD') FROM DUAL 

Grazie

risposta

3

Se si sta lavorando con stringhe e si desidera eseguire la conversione in un tipo di dati datetime, è preferibile utilizzare stringhe che possono essere convertite in modo non ambiguo in data/ora. I seguenti formati possono essere convertiti in valori datetime da SQL (tramite CONVERT, o lasciando SQL Server eseguire la conversione implicitamente) senza alcuna ambiguità:

'20101102' 

'2010-11-02T10:59:59' 

'2010-11-02T10:59:59.997' 

In tutti i formati di cui sopra, i componenti della data sono disposti come 4 cifre anno, poi mese, poi giorno. Altri formati che sembrano banalmente simili (ad esempio '2010-11-02') possono essere convertiti in valori diversi, a seconda delle impostazioni della lingua per la connessione (ma la risposta di Dogget è ancora valida, perché la sta usando in un'espressione letterale ODBC, che è ben definita - che lo circonda con i {d } caratteri)

+0

Siamo spiacenti, hai torto: 'xxxx-xx-xx' di default è sempre minacciato come' aaaa-MM-gg', non come 'aaaa-gg-MM': 'seleziona cast (' 2010-11-02 ' come datetime) ' – abatishchev

+0

@abatishchev -' seleziona lingua 'british english' seleziona cast ('2010-11-02' come datetime) '- risultato: 2010-02-11 00: 00: 00.000 –

+0

@abatishchev - e per dimostrare che è errore nell'input, non nell'output - 'set language 'inglese britannico' seleziona DATEPART (mese, cast ('2010-11-02' come datetime))' restituisce 2 –

3

Si può fare SELECT {d '2010-11-02'} devono utilizzare questo formato esatto però

0

select convert(datetime, convert(char(8), 20101102))

0

È possibile utilizzare select convert(datetime, '11-11-2010') per convertire in datetime.

+0

Questo formato è ambiguo: in base alle impostazioni della lingua, SQL Server potrebbe interpretare tale stringa come MM-GG-AAAA o GG-MM-AAAA. –

+0

Oh.Thanks. Non lo sapevo. – pavanred

0

È possibile utilizzare semplicemente set @datevar='20101102';. Questo è indipendente dalla lingua e verrà convertito implicitamente.

1

Specificare il stile nell'argomento per la funzione di conversione. Vedere la guida msdn su convert per i diversi valori.

select convert(datetime, '2010-11-02', 120) 
... 
2010-11-02 00:00:00.000 
Problemi correlati