我希望这是可以解决的。
基本上,我正在使用SQL Server数据库表,在此表中有一个名为matchdate
的字段。该字段的格式为nchar(50)
。
我的表格中有超过2000条记录,matchdate
字段中的日期均为英国格式,例如" 29/04 / 2014"。
我正在尝试查询表格,以便我可以在两个英国日期之间提取记录。为此,我使用以下查询:
SET DATEFORMAT DMY;
SELECT * from mytable
WHERE CAST(matchdate as datetime) BETWEEN '" & startdate & "' and '" & enddate & "'
order by cast([matchdate] as datetime) asc"
你可能会说这种类型的查询肯定不是我的力量。如果英国startdate
值是" 01/03/2014"和英国enddate
价值是" 23/04 / 2014"我收到以下错误:
用于SQL Server的Microsoft OLE DB提供程序错误' 80040e07'
从字符串转换日期和/或时间时转换失败。
我猜这是因为我使用两种英国日期格式?我如何查询英国格式的" matchdate"字段表使用英国"开始"和英国"结束"格式化日期并绕过此错误?
PS:不幸的是,我无法访问数据库表。
答案 0 :(得分:1)
尝试使用CONVERT功能作为日期,以便指定日期标准 例如英国是103
-- test
SELECT CONVERT(DATETIME, '10 January 2014', 103)
SELECT * from mytable WHERE CONVERT(DATETIME, matchdate, 103) BETWEEN '" & startdate & "' and '" & enddate & "' order by CONVERT(DATETIME, matchdate, 103) asc"