日期时间的 SSIS 源格式隐式转换

2023-12-29

有谁知道有一个图表可以显示 SSIS 中不同数据类型支持哪些日期格式?例如,是否DT_DBTimestamp支持格式1-Jan。我尝试寻找但找不到任何东西。

我问的原因是我发现当我尝试做一个Convert(datetime, '1-Jan')它失败了,正如我所料。但是,当我将相同的值拉入 SSIS 时DT_DBTimestamp,它会隐式地将其识别为1/1/2017而不是将行重定向为数据类型转换错误。


基本信息

这些是日期时间数据类型的默认格式(从字符串转换时)

DT_DBDATE
yyyy-mm-dd

DT_FILETIME
yyyy-mm-dd hh:mm:ss:fff

DT_DBTIME
hh:mm:ss

DT_DBTIME2
hh:mm:ss[.fffffff]

DT_DBTIMESTAMP
yyyy-mm-dd hh:mm:ss[.fff]

DT_DBTIMESTAMP2
yyyy-mm-dd hh:mm:ss[.fffffff]

DT_DBTIMESTAMPOFFSET
yyyy-mm-dd hh:mm:ss[.fffffff] [{+|-} hh:mm]

注意:DT_DATE和DT_DBTIMESTAMP具有相同的设置方法 https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.pipeline.pipelinebuffer.setdatetime.aspx

我认为将字符串转换为日期还取决于您当前的文化信息

更详细的信息可以在这里找到

  • 集成服务数据类型 https://learn.microsoft.com/en-us/sql/integration-services/data-flow/integration-services-data-types?view=sql-server-2017
  • SSIS 到 SQL Server 数据类型转换 https://devinknightsql.com/2010/12/22/ssis-to-sql-server-data-type-translations/

实验:

阅读您的评论后,我没有找到任何与您的问题相关的文章,所以我做了以下实验:

SSIS隐式日期时间转换

我使用 Dataflowtask 创建了一个 SSIS 包。在此数据流任务中,我创建了一个脚本组件(作为源)和一个平面文件目标。该脚本有一个输出列OutDate类型的DT_DbTimeStamp在脚本中我使用了以下代码:

Private dtDate As Date = #01/01/2016#

Public Overrides Sub CreateNewOutputRows()

    Output0Buffer.AddRow()


    Using sw As New IO.StreamWriter("D:\Result.txt", False)
        sw.WriteLine("CultureInfo;Date;Format;Accepted")
        sw.Close()
    End Using


    For Each ci As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures)

        For Each strFormat As String In ci.DateTimeFormat.GetAllDateTimePatterns

            Dim boolResult As Boolean = True
            Try


                Output0Buffer.OutDate = dtDate.ToString(strFormat)

                boolResult = True

            Catch ex As Exception

                boolResult = False



            End Try

            Using sw As New IO.StreamWriter("D:\Result.txt", True)
                sw.WriteLine(ci.Name & ";" & dtDate.ToString(strFormat) & ";" & strFormat & ";" & boolResult.ToString)
                sw.Close()
            End Using

        Next



    Next



End Sub

首先,我循环遍历所有文化信息,并获取与其相关的所有日期时间格式并循环它们。然后我尝试转换日期dtDate声明为格式化字符串并将其分配给输出列。

因此,如果接受将指定格式的字符串值分配给 DT_DBTIMESTAMP 输出列,则意味着格式已隐式转换

Output0Buffer.OutDate = dtDate.ToString(strFormat)

这是结果文件的链接:

  • 结果.txt https://www.dropbox.com/s/0f1kmbzgh78fkxw/Result.txt?dl=0

SQL Server 日期时间隐式转换

有两种日期时间字符串格式可以在任何语言设置下正确解释。

yyyyMMdd
yyyy-MM-ddTHH:mm:ss    (ISO8601)

另外,您可以重复相同的实验,但这一次通过创建一个SqlCommand并执行它:

Dim sqlcmd as new SqlCommand("SELECT CONVERT(DATETIME,'" + dtdate.ToString(strFormat) + '")"

sqlCmd.ExecuteReader()

这样,如果 sqlcmd 抛出异常,则意味着格式无法转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日期时间的 SSIS 源格式隐式转换 的相关文章

随机推荐

  • 组合框中的默认文本

    我有 2 个组合框 如图所示 想知道是否可以为组合框设置某种文本字段 因此第一个框将说明成员 这样我想摆脱组合框上方的文本框 我知道这可以通过将 成员 添加到数据集中来完成 但我不想这样做 还有别的办法吗 BR 您正在寻找的效果称为 水印
  • 当手机空闲/打瞌睡/锁定时 Android 服务不工作

    晚上好 我已经尝试了好几天了 我真的不知道还能尝试什么 我基本上尝试了我在网上找到的所有东西 但它仍然不起作用 但我有一种感觉 一旦我找到了解决方案它一定是非常简单的事情 我正在开发一个更大的项目 但在这里我只是想得到一个非常简单的示例 我
  • Jetty 中的 ServletHandler 和 ServletContextHandler 有什么区别?

    我正在尝试开始使用嵌入式 Jetty 服务器 我只想根据请求路径将请求映射到不同的 servlet 创建一个有什么区别ServletHandler并向其中添加 servlet 而不是创建ServletContextHandler并向其中添加
  • 复制迁移的目的是什么?

    背景 如果可执行文件具有在共享对象中定义的外部数据引用 则编译器将使用复制重定位并将副本放置在其 bss 部分中 本网站详细介绍了复制迁移 http www shrubbery net solaris9ab SUNWdev LLM p22
  • 验证失败:上传文件的扩展名与其内容不匹配

    我正在使用回形针 gem 上传文件 我的回形针 gem 版本是回形针 4 1 1 上传文件时抛出 Validation failed Upload file has an extension that does not match its
  • 我是否需要为图片元素内的每个源重复类属性? (HTML5)

    我正在将图像转换为 webp 这意味着我需要使用 图片 标签而不是 img 因为图片允许为不支持 webp 的设备和浏览器回退到 png 格式 无论如何 我有一个如下所示的 img img class usp pics pic1 src i
  • 检查 Arduino 中的内存占用

    我正在使用 Arduino 开发一个简单的项目 最近 我必须将我的一个变量转换为 long 而不是 int 为了让事情简单 我只是移动了它与之交互的所有数字 所以我不必担心跨类型比较和数学 这看起来很浪费 但这只是我自己的一个时钟 我并不在
  • 没有虚拟继承的多重继承

    我试图理解多重继承 这是我的代码 struct A A static int n static int increment return n int A n 0 struct B public A struct C public A str
  • 在Spring控制器中,我可以根据请求参数的数量调用一个方法吗?

    我一直在用 Spring 改造现有的网络应用程序 显然 从 Spring 开始比稍后添加要容易得多 我们有可以接受多个请求参数的 servlet 根据参数的数量 将采取不同的操作 例如 doSomething prod 15 显示产品 15
  • 使用 Unicode 字符作为 zip 存档内的文件名

    我正在压缩的文件名包含一些特殊字符 例如P r quation LES HOPITAUX NEUFS xls到另一个文件夹 比如说temp 我可以压缩文件 但问题是文件名会自动更改为P r 方程 LES HOPITAUX NEUFS xls
  • 在 WSO2 中传递 CDATA

    WSO2 4 8 1 在 XML 消息中传递 CDATA 部分时存在一个众所周知的问题 此类部分始终会替换为其 XML 转义字符串形式的内容 任何解决此问题的方法将不胜感激 同时 我找到了一个页面 介绍了用于此目的的一些补丁 patch05
  • Linuxarm64如何在AArch32和AArch64之间切换

    Linux支持运行32位应用程序 只要 内核启用CONFIG COMPAT 硬件支持AArch32 我假设32位应用程序必须在arm AArch32执行状态下运行 并且如果环境有32位应用程序和64位应用程序 32位应用程序进程 gt ar
  • Spark-sql:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient

    经过相当长的一段时间 无法弄清楚如何在运行 Spark sql 二进制文件时识别以下错误的根本原因 15 12 08 14 48 41 WARN NativeCodeLoader Unable to load native hadoop l
  • ASP.Net 相当于 PHP 的 Echo 是什么?

    我想 回显 由定界符分隔的字符串 例如 塞尔吉奥 塔皮亚 1999 上午10点 HTML 页面的正文 我怎样才能实现这个目标 谢谢你 Use Response Write string http msdn microsoft com en
  • AspectJ:一个方面内多个建议的执行顺序(优先级)

    类使用编译时编织 想象一下我有一个方面类 Aspect public class SecurityInterceptor Pointcut within org springframework stereotype Controller p
  • JQ 验证插件 - 表单外的错误标签( errorPlacement ),可能吗?

    我在用着JQuery 验证插件 http bassistance de jquery plugins jquery plugin validation 我想知道是否可以将错误放置在正在验证的 FORM 元素之外 我想将所有错误标签放置在 D
  • Global.asax 未加载预编译的 asp.net 网站

    我使用 Visual Studio 2008 发布我的 asp net 网站 当我在服务器 Windows 2008 服务器 上打开该网站时 我注意到 global asax 中的代码没有运行 我的 Global asax 主体类似于
  • WMI 和 Win32_DeviceChangeEvent - 返回了错误的事件类型?

    我正在尝试使用 WMI 注册 设备添加 设备删除 事件 当我说设备时 我指的是钥匙上的磁盘或任何其他带有我可以访问的文件的设备 我正在注册该事件 并且引发了该事件 但 EventType 属性与我期望看到的不同 文档 MSDN http m
  • 使用实体框架向模型添加方法

    使用实体框架 是否可以向对象类添加方法 例如 我有一个 CLIENT 映射 我想创建一个 getAgeFromBirhDate 方法 是的 这是可能的 实体框架生成部分课程 http msdn microsoft com en us lib
  • 日期时间的 SSIS 源格式隐式转换

    有谁知道有一个图表可以显示 SSIS 中不同数据类型支持哪些日期格式 例如 是否DT DBTimestamp支持格式1 Jan 我尝试寻找但找不到任何东西 我问的原因是我发现当我尝试做一个Convert datetime 1 Jan 它失败