Aggiornamento campo datetime

martedì 27 aprile 2010 - 20.06

denis.basei Profilo | Senior Member

Salve a tutti
oggi non sono riuscito a vincere la sfida di aggiornare, da sql server 2005, un campo tipo datetime prelevando l'informazione da un corrispondente record di una tabella su un linked server.
La situazione è questa: il campo da aggiornare è definito datetime. La fonte da cui prendo l'informazione è composta da due campi numerici dove il primo contiene la data nel formato AAAAMMGG ed il secondo contiene ora e minuti nel formato HHMM.
La query che ho costruito mi ritorna l'errore "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value." Non capisco il motivo dell'errore visto che la costruzione della data è corretta gg/mm/aaaa hh.mm
Ho riprodotto la situazione usando un esempio. Allego due files. Il primo contiene le istruzioni sql per creare le due tabelle e inserire qualche dato, il secondo contiene la query SQL.


Ringrazio anticipatamente chi potrà aiutarmi.
Denis B. - www.baseiengineering.com

Giuseppe_gzp Profilo | Newbie

Ciao questa funzione che ho trovato su internet potrebbe esserti utile

create FUNCTION [dbo].[StringToData] ( @Appo varchar(20) ) RETURNS datetime AS BEGIN DECLARE @Data datetime SET @Appo = Substring(@Appo,1,4) + '-' + Substring(@Appo,5,2) + '-' + Substring(@Appo,7,2) + ' ' + Substring(@Appo,9,2) + ':' + Substring(@Appo,11,2) + ':' + Substring(@Appo,13,2) SET @Data = convert(datetime, @Appo, 120) -- Return the result of the function RETURN @Data END


prende una data formato varchar (19000101000000) e la trasforma in Datetime(1900-01-01 00:00:00)

spero di esserti stato utile

ciao!:)

lbenaglia Profilo | Guru

>oggi non sono riuscito a vincere la sfida di aggiornare, da sql
>server 2005, un campo tipo datetime prelevando l'informazione
>da un corrispondente record di una tabella su un linked server.
>La situazione è questa: il campo da aggiornare è definito datetime.
>La fonte da cui prendo l'informazione è composta da due campi
>numerici dove il primo contiene la data nel formato AAAAMMGG
>ed il secondo contiene ora e minuti nel formato HHMM.
Terribile

>La query che ho costruito mi ritorna l'errore "The conversion
>of a char data type to a datetime data type resulted in an out-of-range
>datetime value." Non capisco il motivo dell'errore visto che
>la costruzione della data è corretta gg/mm/aaaa hh.mm
>Ho riprodotto la situazione usando un esempio.
Quel formato è corretto SOLO se la connessione che sta eseguendo la query è configurata per utilizzare la lingua British/French oppure è stato espressamente esplicitato tale formato tramite SET DATEFORMAT.
SQL Server aderisce allo standard ANSI SQL il quale prevede il formato YYYYMMDD HH:MM:SS.MS che esclude qualsiasi interpretazione legata alla lingua di default della login oppure alla SET DATEFORMAT.

Quindi la tua query può essere rivista in questo modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Ringrazio anticipatamente chi potrà aiutarmi.
Prego.

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

denis.basei Profilo | Senior Member

Sei una sicurezza!!!



Grazie

Denis
Denis B. - www.baseiengineering.com
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