我已经将Access中的查询复制,粘贴并转换为SQL Server,但似乎无法弄清楚如何将Access日期转换为SQL Server友好格式。
编写应用程序的人已经不见了,所以我靠自己。以下是几个例子:
SetupDate Between '120701' And '151299'
SetupDate Between '001000' And '151299'
答案 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))