【问题标题】:yyyymmdd - getdate retun the intyyyy mm dd - getdate 返回 int
【发布时间】:2014-08-26 01:42:58
【问题描述】:

destination int 值是 [columndate] - getdate

Create table Source_Table (  [Valyyyymmdd] [nvarchar](24) NULL  )
Create table Destination_Table ( [DestColumn]  [int] NULL  )

Insert into Source_Table (Valyyyymmdd) values
(20130503),(20120403),(00000000),(20110523),(20100715)

我想用 getdate() 来区分 所以我在我的源代码中使用了下面的 SQL 查询 预期结果 SQL

 SELECT DATEDIFF(DAY, CASE WHEN ISDATE(Valyyyymmdd) = 0 THEN getdate() ELSE Valyyyymmdd END ,   getdate()) as DestColumn 
 FROM dbo.Source_Table

目标列 479 874 0 1190 第1502章

但我需要获取 Valyyyymmdd 并执行 ssis 派生列以获取导致 int 值的日期差异。

我尝试如下

((DT_WSTR,24)DestColumn == "00000000" ? GETDATE() : (DT_DBDATE)(SUBSTRING((DT_WSTR,10)DestColumn,1,4) + "-" + SUBSTRING((DT_WSTR,10)DestColumn,5,2) + "-" + SUBSTRING((DT_WSTR,10)DestColumn,7,2)))

【问题讨论】:

  • 你能给出一个样本结果集吗?
  • 我需要表达式来返回 Int ,这是我使用上面的 SQL 查询实现的
  • 这是怎么回事?
  • 源中有一个日期字段,考虑到今天使用 SSIS 的日期,我需要将日期差异放入目标表中,同时考虑到今天的日期

标签: ssis


【解决方案1】:

对我来说,以下工作。

Dt == "00000000" ? (DT_DATE)GETDATE() : (DT_DATE)(SUBSTRING(Dt,1,4) + "-" + SUBSTRING(Dt,5,2) + "-" + SUBSTRING(Dt,7,2))

[Dt] 代替 [DestColumn]

【讨论】:

  • 你的意思是,我必须将其粘贴到派生列计算中
  • 是的,在您的数据流中,拖动一个派生列并从源连接它。
  • 是的,我做到了。我得到日期的结果..但我的预期结果是 int DestColumn 479 874 0 1190 1502
  • 我已经用示例和示例预期结果编辑了我的查询。请检查一次
【解决方案2】:
DATEDIFF("d",([Valyyyymmdd] == "00000000" ? (DT_DBDATE)GETDATE() : (DT_DBDATE)(SUBSTRING([Valyyyymmdd ],1,4) + "-" + SUBSTRING([Valyyyymmdd ],5,2) + "-" + SUBSTRING(@[Valyyyymmdd ],7,2))),GETDATE())

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2013-02-22
    • 1970-01-01
    • 2020-02-24
    • 2014-05-08
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多