【发布时间】:2013-10-17 11:31:12
【问题描述】:
我有以下数据:
StartDate FinishDate Details
09/10/2013 11/10/2013 xxx
14/10/2013 13/10/2014 Taking a year off
在编辑此数据时,我要检查的日期范围不重叠。
我正在通过 ado 从访问中运行 SQL 查询来执行此操作;我将输入的日期输入数据库格式(即'mm/dd/yyyy');这是我得到的查询:
SELECT Count(*)
FROM MarkerAbsence
WHERE PerID = 718 AND
('10/09/2013' BETWEEN StartDate AND FinishDate OR
'10/11/2013' BETWEEN StartDate AND FinishDate)
如果数据有效,则返回零记录;但是它不返回 1(是上面列出的第二个记录),因此似乎将 '10/11/2013' 解释为 dd/mm/yyyy 而不是 mm/dd/yyyy。
如果我在 SMO 中这样做:
DECLARE @datevar datetime2 = '31/12/2008';
SELECT @datevar;
我明白了:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
虽然
DECLARE @datevar datetime2 = '12/31/2008';
SELECT @datevar;
返回
2008-12-31 00:00:00.0000000
那么为什么我会遇到这个问题,我该如何解决呢?
【问题讨论】:
-
StartDate和FinishDate字段的数据类型是什么?您正在使用哪个 RDBMS?是 SQL Server 吗? -
您确定它匹配的是第二条记录而不是第一条记录吗?我认为 10/09/2013 将介于 10/09/2013 和 10/11/2013 之间。
标签: sql