Formato di un valore datetime in sql server 2000

giovedì 18 dicembre 2003 - 18.35

sheen77 Profilo | Newbie

Salve a tutti, il mio problema è il seguente:

debbo inserire giorno mese anno ore minuti secondi e millisecondi in una colonna, qual'è la sintassi per inserire questo valore? Riesco solo a inserire la data nel formato es: 18/12/2003

Ciao a tutti

Brainkiller Profilo | Guru

Ciao,
premessa, non è bene utilizzare nel codice query sql dirette tipo SELECT, INSERT, UPDATE, ecc anche se a volte lo faccio anche io.
La procedura corretta è crearsi in T-SQL delle Stored Procedure che poi richiami dal tuo codice C# e/o VB.NET. In questo caso infatti è sufficiente che tu assegni la data al parametro della stored procedure, e fa tutto lui automaticamente, pensa che bello :)
Diversamente devi procedre con una query di questo tipo, molto bruttina:
INSERT INTO Tabella (Nome_Colonna) VALUES (CONVERT(DATETIME, '2003-12-10 14:44:46', 102))

Ciao
David

sheen77 Profilo | Newbie

Sicuramente hai ragione sulle stored procedure, ci ho lavorato in passato con Sybase.
La tua stringa funziona a meno però dei millisecondi che non vengono memorizzati nel DB.
Il risultato è nel db: 10/12/2003 14.44.46.
Sai se c'è un modo per memorizzare i millisecondi?
Ciao e grazie

Brainkiller Profilo | Guru

Direi che con un piccolo sforzo ci arrivi anche tu eh ? :)

INSERT INTO Tabella (nome_colonna) VALUES (CONVERT(DATETIME, '2003-12-10 14:44:46:111', 102))

ciao
david

lbenaglia Profilo | Guru

Ciao David,

il tuo suggerimento di utilizzare stored procedure parametriche è sicuramente la soluzione più efficiente.

> INSERT INTO Tabella (nome_colonna) VALUES (CONVERT(DATETIME, '2003-12-10 14:44:46:111', 102))

Volevo solo farti notare che non occore effettuare un cast della stringa in datetime:

USE tempdb
GO

/* Creo una tabella di test */
CREATE TABLE dbo.Test(
TestID int NOT NULL IDENTITY PRIMARY KEY,
TestDate datetime NOT NULL
)
GO

/* La popolo */
INSERT dbo.Test VALUES('2003-12-10 14:44:46.111')
GO

SELECT *
FROM dbo.Test
GO

/* Output:

TestID TestDate
----------- -----------------------
1 2003-12-10 14:44:46.110

(1 row(s) affected)

*/

/* Pulizia */
DROP TABLE dbo.Test

Inoltre dato che l'accuratezza del data type datetime è di 3.33 ms, il valore verrà approssimato per difetto.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5