【问题标题】:Using Excel to generate SQL - problem handling date field使用Excel生成SQL——问题处理日期字段
【发布时间】:2011-01-18 11:35:18
【问题描述】:

我有一个 Excel 文件,其中包含我的客户想要放入数据库的数据。我在数据左侧生成了一列,如下所示(显然更改了此处的字段名称):

="INSERT INTO TBL_CUSTOMER
                      (FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, FIELD, FIELD, 
                      FIELD, FIELD, CUSTOMER_DATE_REGISTERED)
VALUES     ('"&D2&"','"&E2&"','"&F2&"','"&G2&"','"&H2&"','"&I2&"','"&J2&"','"&K2&"','"&L2&"','"&M2&"','"&N2&"','"&O2&"','"&P2&"','"&Q2&"','"&R2&"','"&S2&"','"&T2&"','"&U2&"','"&V2&"','"&W2&"','"&X2&"','"&Y2&"','"&Z2&"','"&AA2&"','"&AB2&"','"&AC2&"')"

一切正常,但问题是最后一项(单元格 AC2)是格式为 25/12/2010 08:45:45 的日期。 Excel 将其读取为 40537.3651041667。

知道如何让它正确显示吗?

希望大家帮忙!

编辑:我将单元格格式设置为 AC2 的 Nomatted 我仍然将那个随机数拉入查询

【问题讨论】:

    标签: sql excel


    【解决方案1】:

    试试 TEXT() 函数...

    TEXT(AC2, "dd/mm/yyy hh:mm:ss")
    

    这会从指定格式的值中返回一个字符串

    ="INSERT INTO TBL_CUSTOMER
                          (FIELD, FIELD, FIELD, FIELD, FIELD, 
                          FIELD, FIELD, FIELD, FIELD, FIELD, 
                          FIELD, FIELD, FIELD, FIELD, 
                          FIELD, FIELD, FIELD, FIELD, FIELD, 
                          FIELD, FIELD, FIELD, FIELD, 
                          FIELD, FIELD, CUSTOMER_DATE_REGISTERED)
    VALUES 
        ('"&D2&"','"&E2&"','"&F2&"','"&G2&"','"&H2&"','"&I2&"','"&J2&"','"&K2&"','"&L2&"','"&M2&"','"&N2&"','"&O2&"','"&P2&"','"&Q2&"','"&R2&"','"&S2&"','"&T2&"','"&U2&"','"&V2&"','"&W2&"','"&X2&"','"&Y2&"','"&Z2&"','"&AA2&"','"&AB2&"',
    '"&TEXT(AC2, "dd/mm/yyy hh:mm:ss")&"')"
    

    【讨论】:

    • 格栅解决方案。减少了 70% 的手动工作。同样也可以应用于时间列,
    【解决方案2】:

    使用与区域无关的格式的 TEXT 函数

    TEXT(AC2, "yyyymmdd hh:mm:ss")
    

    TEXT(AC2, "yyyy-mm-ddThh:mm:ss")
    

    【讨论】:

      【解决方案3】:

      为此苦苦挣扎了一段时间。使用分号代替逗号。

      (Office16)

      TEXT(AC2; "dd/mm/yyy hh:mm:ss")

      代替

      TEXT(AC2, "dd/mm/yyy hh:mm:ss")

      【讨论】:

        猜你喜欢
        • 2017-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多