使用DateTime参数

时间:2016-02-09 18:45:36

标签: sql-server datetime

我可以成功使用带有字符串格式的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查询中包含字符串格式化日期时间的正确格式是什么?

3 个答案:

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