varchar vs sql中的datetime

Spr*_*ner 1 sql sql-server sql-server-2008

我在从SQL Server检索时遇到问题所以我发布了这个[问题] [1]

我没有得到任何合适的答案.所以我已经将列数据类型更改datetimevarchar,现在它可以正常工作.

SELECT *  
FROM test
WHERE (timeStamp BETWEEN '05-09-2013 18:23:57' AND '05-09-2013 18:23:59')
Run Code Online (Sandbox Code Playgroud)

但我的查询,如果varchar数据类型可以发挥的作用,datetime并在varchar我们还可以存储字符串,那么为什么SQL提供datetime的数据类型?我知道varchar占用的空间比datetime.我想知道其他原因.

Rom*_*kar 5

将列的数据类型更改为datetime.如果你在where子句中使用datetime而不是varchar,你可以进行查询:

select *
from test
where timeStamp between convert(datetime, '2013-09-05 18:23:57', 120) and convert(datetime, '2013-09-05 18:23:59', 120)
Run Code Online (Sandbox Code Playgroud)

如果您使用日期的ISO格式,我很确定即使使用隐式转换也可以工作:

select *
from test
where timeStamp between '2013-09-05 18:23:57' and '2013-09-05 18:23:59'
Run Code Online (Sandbox Code Playgroud)

这里有关于强制转换和转换的更多信息.