2013-10-31 69 views
0

为什么没有转换或时间字符串的传球没有为datetiem2(0)场在这里工作是查询。为什么转换和日期时间不工作的日期时间(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 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 
+0

你是什么意思,它不工作?如果是的话请抛出错误,请你能显示你正在收到的错误消息吗? –

回答

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。 这可能不是你想要的。

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)数据类型存储没有小数的值,以秒为单位,小时从00:00:00 - 23:59:59您添加AM/PM与传递值'2013-10-10 00:00:01 AM'在您的where条件筛选出结果集中的所有值和你会得到一个空的设置,如果不使用AM/PM,请尝试再次查询,它应该可以正常工作。
使用AM/PM会给你以下错误

Msg 241, Level 16, State 1, Line 6 
Conversion failed when converting date and/or time from character string. 
相关问题