怎么投DATETIME2为DATETIME(how to cast datetime2 as dat

2019-06-25 13:20发布

我试图DATETIME2转换为datetime,以创建只使用SQL或SSIS以下面的SQL查询作为例子不同来源之间的标准:

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

我得到以下错误:“从数据类型DATETIME2显式转换是不允许的时间戳。”

此外,我也设法用一个简单的强制转换为DATETIME2转换成日期。

什么是使用SQL Server 2008或SSIS转换DATETIME2为datetime的正确方法?

gilibi

Answer 1:

您铸造timestamp在你的代码。 更改datetime

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


Answer 2:

你的样品select语句试图投offer_start_date为timestamp不是日期时间。

如果你想从你的DATETIME2列中的时间戳值,你可以DatePart函数来获取日期的各个部分,并建立它自己。

例如:

declare @date datetime2
set @date = GETUTCDATE()

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

MSDN参考日期部分功能。

不知道为什么你得到这个错误,我不是有同样的问题。 下面的例子在我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


Answer 3:

OK,我设法完成这一使用SSIS数据转换组件。 我发现我可以使用DT_DBTIME2或DT_DBTIME

感谢大家谁帮助



Answer 4:

在我的情况下,值是varchar

如果该值是varchardatetime2 ,如'2018-10-24 12:06:29.6112233' ,则首先将其转换为datetime2 ,然后到一个datetime

select cast(cast('2018-10-24 12:06:29.6112233' as datetime2) as datetime)


Answer 5:

转换(日期时间,转换(VARCHAR(4),日期部分(年,table_field))+ ' - ' +转换(VARCHAR(2),日期部分(月,table_field))+ ' - ' +转换(VARCHAR(2),日期部分(DD,table_field)))时table_field是DATETIME2类型



文章来源: how to cast datetime2 as datetime