我可以成功使用带有字符串格式的Date参数的Query作为
SELECT * FROM ORDERS WHERE [DATE]='20160209'
但是我没有看到任何查询以字符串格式指定DateTime参数的示例。 下一个示例被Microsoft SQL Server Management Studio拒绝:
SELECT * FROM ORDERS WHERE [DATE]='20130523T153500000Z'
SELECT * FROM ORDERS WHERE [DATE]='2013-05-23T15:35:00:000Z'
我知道这不是一个好习惯,我应该传递DateTime值而不是字符串,但有时它对调试很有用。
在SQL查询中包含字符串格式化日期时间的正确格式是什么?
答案 0 :(得分:1)
你能做这样的事吗?
SELECT *
FROM ORDERS
WHERE [DATE] = CONVERT(DATETIME,'20130523T153500000Z')
只要字符串处于可行的格式。
答案 1 :(得分:1)
不确定你的日期格式在哪里...... 这一个'2013-05-23T15:35:00:000Z'似乎并不合适。我没有看到纳秒由':'字符分隔。它通常是一秒的小数,所以'2013-05-23T15:35:00.000Z'是一种更好的格式,它可以工作:
select convert(DateTime,'2013-05-23T15:35:00.000Z')
至于另一个,您可能需要自己进行解析:
select CONVERT(DATETIME,LEFT('20130523T153500000Z',4)+SUBSTRING('20130523T153500000Z',5,2)+SUBSTRING('20130523T153500000Z',7,2))
希望这会有所帮助。
答案 2 :(得分:0)
如果仅用于调试,您可能会执行以下操作:
DECLARE @val VARCHAR(25)
-- Easily swapped out with different testing values
SET @val = '20130523T153500000Z'
SELECT *
FROM Orders
WHERE [DATE] = CAST(@val AS DATETIME)
-- You could also use CONVERT