我试图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
您铸造timestamp
在你的代码。 更改datetime
。
SELECT CAST(offer_start_date AS datetime) FROM [ODS].[macaclient_offers]
你的样品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
OK,我设法完成这一使用SSIS数据转换组件。 我发现我可以使用DT_DBTIME2或DT_DBTIME
感谢大家谁帮助
在我的情况下,值是varchar
。
如果该值是varchar
的datetime2
,如'2018-10-24 12:06:29.6112233'
,则首先将其转换为datetime2
,然后到一个datetime
:
select cast(cast('2018-10-24 12:06:29.6112233' as datetime2) as datetime)
转换(日期时间,转换(VARCHAR(4),日期部分(年,table_field))+ ' - ' +转换(VARCHAR(2),日期部分(月,table_field))+ ' - ' +转换(VARCHAR(2),日期部分(DD,table_field)))时table_field是DATETIME2类型