【发布时间】:2012-06-04 23:50:50
【问题描述】:
我的表中有这条记录
Name UserName Password DateAdded
skype someusername somepassword 05/06/2012 01:18:50
我正在尝试执行此语句,但它总是失败。
一些尝试:(全部失败)
Select * from Passwords where DateAdded = '05/06/2012 01:18:50'
Select * from Passwords where DateAdded = #05/06/2012 01:18:50#
Select * from Passwords where DateAdded = '06/05/2012 01:18:50'
Select * from Passwords where DateAdded = '2012/06/05 01:18:50'
Select * from Passwords where DateAdded = '2012/05/06 01:18:50'
Select * from Passwords where DateAdded like '2012/06/05 01:18:50'
我数据库中的列DateAdded 的类型是datetime 而不是nvchar。
我是 SQL 新手,这个查询有什么问题?
【问题讨论】:
-
当您说
fails时,实际发生了什么?您收到错误消息吗?它说什么?是意想不到的结果吗?它们是什么? -
如果你没有得到任何结果,这可能是因为 DateTime 类型比一秒更精确(低至数千秒),所以除非你很幸运并且碰巧得到一个没有小数秒的插入,或者碰巧在插入时手动指定了日期,您的查询不会得到任何结果。对于 DateTime,您通常使用 或 BETWEEN,除非您专门截断输入的 DateTime,以便您可以知道,例如,您不必担心小数秒。
-
我试了一下,但没有用,问题是它返回 0 行没有任何反应。为了使它工作,我必须使用 > 而不是 = 这是错误的。
-
所以为了让它工作我应该在 ? 之间使用
-
这取决于你在做什么。可以在插入之前或插入时修剪掉小数秒。也可以在比较时修剪查询中的小数秒,但这会降低性能。您能否更新您的帖子,说明您需要运行精确到秒的查询的原因,或者更一般地说您正在尝试做什么?
标签: sql sql-server date select sql-server-ce