2012-06-18 33 views
5

Estoy tratando de convertir a datetime2 de fecha y hora con el fin de crear un estándar entre diferentes fuentes utilizando sólo SQL o SSIS Tome la siguiente consulta SQL como ejemplo:cómo emitir datetime2 como fecha y hora

consigo el siguiente error: 'La conversión explícita del tipo de datos datetime2 a timestamp no está permitida.'

Además, logré convertir datetime2 en fecha usando un simple molde.

¿Cuál es la forma correcta de convertir datetime2 a datetime usando SQL Server 2008 o SSIS?

gilibi

+0

¿Ha leído http://stackoverflow.com/questions/1331779/c-sharp-conversion-of-a-datetime2 -data-type-a-datetime-data-type? –

+0

Tengo, pero no puedo usar C# en el estuche – gilibi

+0

Has editado la consulta, pero obviamente el mensaje de error ya no es correcto, ¿todavía * tienes * un error? –

Respuesta

0

OK, logré lograr eso utilizando un componente de conversión de datos SSIS. descubrí que puedo utilizar cualquiera DT_DBTIME2 o DT_DBTIME

Gracias por todos los que ayudaron

2

Su muestra instrucción de selección está tratando de echar a offer_start_date no timestamp de fecha y hora.

Si desea un valor de marca de tiempo de su columna datetime2, puede utilizar la función DatePart para recuperar partes de la fecha y compilarla usted mismo.

Por ejemplo:

declare @date datetime2 
set @date = GETUTCDATE() 

select @date, 
     DATEPART(hour, @date), 
     DATEPART(minute, @date), 
     DATEPART(second, @date) 

referencia MSDN a DatePart función.

No estoy seguro de por qué está recibiendo ese error, no he tenido el mismo problema. El siguiente ejemplo funciona bien en mi 2008 Management Studio.

create table #temp 
(
    OrderId int, 
    OrderDate datetime2 
) 

insert into #temp 
(OrderId, OrderDate) 
values 
(1, GetUTCDate()) 

select *, CAST(OrderDate as datetime) 
from #temp 

drop table #temp 
+0

+1 Para obtener más información acerca del tipo de datos de marca de tiempo infame, [consulte MSDN] (http://msdn.microsoft.com/en-us/library/ms182776 (v = sql.90) .aspx) – Andomar

+0

@Andomar Acabo de actualizar mi publicación para incluir el enlace – Mike

+0

Lo siento, he copiado el ejemplo incorrecto. intenté: SELECT CAST (offer_start_date AS datetime) FROM [ODS]. [macaclient_offers] – gilibi

5

Usted está echando a timestamp en el código. Cambie a datetime.

SELECT CAST(offer_start_date AS datetime) FROM [ODS].[macaclient_offers] 
+0

He copiado la consulta incorrecta. debe ser el mismo que sugirió, pero esto no funciona – gilibi

+0

Extraño. Funciona bien en mis pruebas. [Eche un vistazo aquí] (http://sqlfiddle.com/#!3/e34ce/2). –

+0

¿Qué error obtienes al ejecutar la consulta anterior ?. El mensaje de error en su pregunta se refiere a 'timestamp'. –