Ancora sulle date in Sql Server

domenica 14 dicembre 2008 - 18.22

Mahasunya Profilo | Newbie

Utilizzo uno script asp con database Sql; in locale, con Sql Server 2005, utilizzo il formato datetime per il campo data.
Inserito un nuovo record, il campo data si popola automaticamente.
Stesso script, ma su server e su database sql online, il campo data rimane vuoto e se non 'ammetto' che tale campo possa rimanere nullo l'applicazione non va generando un errore in fase di inserimento.

Devo per forza popolare 'da codice' il campo data? Se si perchè in locale non è necessario?
Non capisco dove sto sbagliando.

Grazie
Mahasunya

lbenaglia Profilo | Guru

>Utilizzo uno script asp con database Sql; in locale, con Sql
>Server 2005, utilizzo il formato datetime per il campo data.
>Inserito un nuovo record, il campo data si popola automaticamente.

Ciao Daniele,

Come inserisci una nuova riga?
Ci mostri il comando di INSERT?
Ti ricordo che se specifichi le date come stringhe, devi utilizzare il formato ANSI SQL 'YYYYMMDD' senza alcun separatore per rendere il tuo codice indipendente dal formato data associato alla login che utilizzi per autenticarti all'istanza (che dipende a sua volta dalla lingua di default della login stessa).

>Devo per forza popolare 'da codice' il campo data? Se si perchè
>in locale non è necessario?
Qua non ti seguo.
Puoi spiegarti meglio?

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Mahasunya Profilo | Newbie

Mea culpa, ho inserito il valore:

(CONVERT([datetime],CONVERT([varchar],getdate(),(1)),(1)))
nel campo data e ora scrive corretamente la data quando inserisco un record anche se l 'ora rimane settata aempre alla mezzanotte.

Si tratta di una conversione da access.

Grazie
Mahasunya

lbenaglia Profilo | Guru

>Mea culpa, ho inserito il valore:
>
>(CONVERT([datetime],CONVERT([varchar],getdate(),(1)),(1)))
>nel campo data e ora scrive corretamente la data quando inserisco
>un record anche se l 'ora rimane settata aempre alla mezzanotte.

Per quale motivo esegui questa doppia conversione?
Se stai impostando un constraint di DEFAULT non ti basta specificare CURRENT_TIMESTAMP (che sarebbe l'analogo ANSI SQL della GETDATE())?

USE tempdb; CREATE TABLE dbo.Students( StudentID int NOT NULL PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL, InsertDate datetime NOT NULL CONSTRAINT DF_InsertDate DEFAULT(CURRENT_TIMESTAMP) ); INSERT dbo.Students(StudentID, FirstName, LastName) VALUES(1, 'Lorenzo', 'Benaglia') , (2, 'Luca', 'Bianchi') , (3, 'Andrea', 'Montanari'); SELECT * FROM dbo.Students; /* Output: StudentID FirstName LastName InsertDate ----------- ---------- ---------- ----------------------- 1 Lorenzo Benaglia 2008-12-14 22:36:40.413 2 Luca Bianchi 2008-12-14 22:36:40.413 3 Andrea Montanari 2008-12-14 22:36:40.413 (3 row(s) affected) */ DROP TABLE dbo.Students;

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Mahasunya Profilo | Newbie

(CURRENT_TIMESTAMP)

e ho risolto il problema.
Grazie mille
Alla prossima!
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