0

为什么转换或日期时间字符串传递都不适用于 datetiem2(0) 字段这里是查询。

 SELECT IsNull(Max(SOURCE_CODE), 'UNKNOWN') source_code,
 FROM  Table1
 WHERE   
 --DATE_INSERTED between CONVERT(DATETIME,'10/01/2013') AND  CONVERT(DATETIME,'10/31  /2013')
  DATE_INSERTED >='2013-10-10 00:00:01 AM'  AND DATE_INSERTED <= '2013-10-31                 23:59:59     PM'    
    AND   (SOURCE_CODE IS NOT NULL)  AND 
    (RESULT_CODE = 0  OR RESULT_CODE = 100)  GROUP BY SOURCE_CODE
4

2 回答 2

0
 SELECT IsNull(Max(SOURCE_CODE), 'UNKNOWN') source_code,
 FROM  Table1
 WHERE   
 --DATE_INSERTED between CONVERT(DATETIME,'10/01/2013') AND  CONVERT(DATETIME,'10/31  /2013')
  DATE_INSERTED >='2013-10-10 00:00:01'  AND DATE_INSERTED <= '2013-10-31 23:59:59'    
    AND   (SOURCE_CODE IS NOT NULL)  AND 
    (RESULT_CODE = 0  OR RESULT_CODE = 100)  GROUP BY SOURCE_CODE

由于Datetime2(0)数据类型以秒和小时为单位存储没有小数的值,因此您在 where 条件中00:00:00 - 23:59:59添加带有传递值 '2013-10-10 00:00:01 AM' 的AM/PM会过滤掉结果集中的所有值,您会得到一个空集回来。在不使用 AM/PM 的情况下再次尝试查询,它应该可以正常工作。
使用 AM/PM 会给你以下错误

Msg 241, Level 16, State 1, Line 6
Conversion failed when converting date and/or time from character string.
于 2013-10-31T19:11:49.297 回答
0

如果你跑步select convert(datetime, '10/01/2013'),你2013-10-10 00:00:01每次都会得到。所以你说between 2013-10-10 00:00:01 and 2013-10-10 00:00:01。这可能不是你想要的。

于 2013-10-31T19:12:08.050 回答