英国日期格式查询?

时间:2014-05-01 08:38:22

标签: sql sql-server

我希望这是可以解决的。

基本上,我正在使用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:不幸的是,我无法访问数据库表。

1 个答案:

答案 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"