【问题标题】:VB script with sql insert. Conversion of a varchar data type to DateTime带有 sql 插入的 VB 脚本。将 varchar 数据类型转换为 DateTime
【发布时间】:2014-12-29 09:29:46
【问题描述】:

当前信息需要处理:

Tid:            13.12.2014 01:48:48

脚本包含的处理内容是:

if isArray (arrString) then
  if uBound (arrString) > 0 then
    Select Case lcase (arrString(0))
      Case "tid": tid = trim (arrString (1)) & ":" & trim (arrString (2)) & ":" & trim (arrString (3))

使用此代码插入时:

sql = "INSERT INTO LoginLogg VALUES ('" & tiden & "', '" & brukernavn & "', '" & maskinnavn & "', '" & operativsystem & "', '" & servicepack & "', '" & minne & "', '" & produsent & "', '" & modell & "', '" & bios & " / "  & bios2 & "', '"& serienummer & "', '"& printere & "', '"& ipadresse & "', '"& imagedato & "', '" & opplosninger & "')"

这变成它返回的SQL:

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围 错误代码:80040e07

我找不到它现在不起作用的原因。数据库从 2003 移到 2008 R2。

如果这将是 powershell,我本来可以解决这个问题,但 VB 不是我的强项。

更新了标题,希望它更适合,以及 sql 插入代码。

【问题讨论】:

  • 使用下一个模板以语言/文化/区域设置无关ISO format管理(并提供到sql)日期和时间:YYYY-MM-DD HH:mm:ss
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误和在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。

标签: sql vbscript datetime-conversion


【解决方案1】:
  1. 修复tid和tiden之间的差异
  2. 查看是否提供 m/d/y 字符串 - trim (arrString (2)) & "/" & trim (arrString (1)) & "/" & trim (arrString (3)) 'works'
  3. 如果 (2) 失败或者您不想破解,请尝试将日期literal“#m/d/y#”连接到您的 SQL 语句中
  4. 如果 (3) 失败或您想正确执行,请使用带有 date 参数的 ADODB.Command/prepared 语句 - 由DateSerial() on CInt(arrString(...) )

【讨论】:

  • 您好,我使用 titen = Replace(tid,".","/") 修复日期之间的 / 或 - 但在 sql 插入时仍然失败。我会看看我是否可以谷歌你的建议
  • @vya - 您是否更改了提案 (2) 中的订单(月/日/年)?
  • Cdate 不会像这里那样转换它,我挪威的写作顺序是已经准备好的。您建议的第二个解决方案返回:48/13.12.2014 01/58
  • @vya - CDate 在这里不相关,因为转换在服务器上失败。结果48/13.12.2014 01/58 表明您的 arrString 不包含预期的内容,请发布数组和生成的 tid[en]。测试将12/13/2014 01:48:48 AM 或#12/13/2014 01:48:48 AM# 硬编码到您的SQL 语句中是否有效,如果是,请相应地调整您的字符串构建。通过方法 (4) 可以避免所有这些冗长的问题。
【解决方案2】:

所以我尝试硬编码 sql 通常接受的格式:2014/01/24 22:00:00 这失败了。

然后我尝试学习用 vb 拆分字符串并通过以下方式加入它们:

Dim ArrSpace, ArrDot

ArrSpace = Split(tid, " ")
ArrDot = Split(ArrSpace(0), ".")
tid = ArrDot(2) & "/" & ArrDot(1) & "/" & ArrDot(0) & " " & ArrSpace(1)

然后插入 tid。这现在有效:) 感谢您指导我正确的方向。

谢谢埃克哈德.荷马

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2019-08-26
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多