【问题标题】:Converting date in MS Access to SQL Server date将 MS Access 中的日期转换为 SQL Server 日期
【发布时间】:2015-12-29 13:33:57
【问题描述】:

我已将 Access 中的查询复制、粘贴并转换为 SQL Server,但似乎不知道如何将 Access 日期转换为 SQL Server 友好格式。

编写应用程序的人走了,所以我一个人。以下是几个例子:

 SetupDate Between '120701' And '151299'
 SetupDate Between '001000' And '151299'

【问题讨论】:

  • 我对访问不是很熟悉,但是这些日期如何?这是DDMMYY吗?
  • "从 Access 到 SQL" - 这是什么意思? SQL 也存在于 Access 中。您是在 Access 中运行从 SQL Server 链接的表的查询、Access 中的传递查询还是 SQL Server 中的(一次性)查询?

标签: sql sql-server ms-access


【解决方案1】:

如果您想在 sql server 中使用该格式,则需要 yyyymmdd 格式的日期。所以这个:

SetupDate Between '120701' And '151299'

变成这样:

SetupDate Between '20120701' And '20151299'

除了“20151299”不是有效日期。所以也许应该是这样的:

    SetupDate Between '20010701' And '19991215'

在这种情况下,您可能不会得到任何记录。

【讨论】:

    【解决方案2】:

    如果我的猜测是正确的,SetupDate 包含 6 位日期,那么如果可能,创建一个临时列 SetupDate2 AS DATE 然后更新:

    update myTable
    set SetupDate2 = CONVERT(DATE, SUBSTRING(SetupDate, 1, 2) + '-' + SUBSTRING(SetupDate, 3, 2) + '-' + SUBSTRING(SetupDate, 5, 2))
    

    然后删除SetupDate并将SetupDate2重命名为SetupDate

    以下是对您的样本的测试:

    SetupDate BETWEEN
            CONVERT(DATE, SUBSTRING('120701', 1, 2) + '-' + SUBSTRING('120701', 3, 2) + '-' + SUBSTRING('120701', 5, 2))
            AND CONVERT(DATE, SUBSTRING('151299', 1, 2) + '-' + SUBSTRING('151299', 3, 2) + '-' + SUBSTRING('151299', 5, 2))
    SetupDate BETWEEN
            CONVERT(DATE, SUBSTRING('001000', 1, 2) + '-' + SUBSTRING('001000', 3, 2) + '-' + SUBSTRING('001000', 5, 2))
            AND CONVERT(DATE, SUBSTRING('151299', 1, 2) + '-' + SUBSTRING('151299', 3, 2) + '-' + SUBSTRING('151299', 5, 2))
    

    【讨论】:

    • 我应该指定的。格式如下:2010-06-11
    • 格式是什么? SetupDate 是 NVARCHAR(10) 吗?还是日期?
    • 完美!如果你按照我的指示,你会得到想要的结果。
    猜你喜欢
    • 2020-09-14
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多