将MS Access中的日期转换为SQL Server日期

时间:2015-12-29 13:33:57

标签: sql sql-server ms-access

我已经将Access中的查询复制,粘贴并转换为SQL Server,但似乎无法弄清楚如何将Access日期转换为SQL Server友好格式。

编写应用程序的人已经不见了,所以我靠自己。以下是几个例子:

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

2 个答案:

答案 0 :(得分:0)

如果要将该格式与sql server一起使用,则需要使用yyyymmdd格式的日期。所以这个:

SetupDate Between '120701' And '151299'

成为这个:

SetupDate Between '20120701' And '20151299'

除了'20151299'不是有效日期。也许它应该是这样的:

    SetupDate Between '20010701' And '19991215'

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

答案 1 :(得分:0)

如果我的猜测是正确的,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))