2014-09-18 4 views
0

J'ai besoin de changer le type de données pour une colonne de Datetime2(7) à Datetime où j'ai beaucoup d'enregistrements avec ce format, ainsi quand j'essaye de changer le type de données j'obtiens l'erreur suivante:Modifier datetime2 à datetime dans SSMS

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.

Comment puis-je modifier les données et modifier le type de données pour cette colonne? La raison pour laquelle je dois passer à un type de données moins précis pour une application où elle n'est pas compatible. Cette application se connecte directement donc aucune conversion ne peut être faite dans le code. Je travaille à l'intérieur de SSMS.

fixe une colonne avec:

select *, cast(calldate as datetime)) * from records 

Mais pas pour l'autre colonne en utilisant même Cast - il donne l'erreur hors de portée. Peut-être que certains champs sont nuls - cela serait-il un problème? Si oui j'ai essayé ceci (même erreur):

select *, cast(closedate as datetime) from records where closedate is not null 
+0

Essayez ici. http://stackoverflow.com/questions/11081571/how-to-cast-datetime2-as-datetime. Edit: Dans un shell écrou, utilisez Datepart pour diviser le datetime2 en morceaux et utiliser ces pièces pour créer un Datetime – gmalenko

+0

J'ai vu celui-ci, je ne comprends tout simplement pas le code. – OneFineDay

+0

J'ai corrigé une colonne, maintenant l'autre est en erreur. – OneFineDay

Répondre

0
DECLARE @TestTime as DateTime2 
SET @TestTime = (SELECT CAST(GetDate() as datetime2)) 

SELECT CAST(@TestTime AS datetime) 

Quand je l'ai couru @TestTime = "24/09/2014 15: 39: 02,7970000" après le premier.
Le résultat était "2014-09-24 15: 39: 02.797"

Questions connexes