问一个基础问题,大家帮忙解释下,先谢了

sqllong 2006-05-16 10:33:01
表一中有
字段为:
bookName madeDate
-----------------
a 2002-08-08

我写成 select * from bookInfo where madeDate>2010-6-6 数据能够显示(非期望结果)
但写成 select * from bookInfo where madeDate>'2010-6-6' 数据就没显示(期望的结果)

希望大家帮我解释下原因,谢谢~~~~~~~~~~~~
...全文
152 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcooc 2006-05-17
  • 打赏
  • 举报
回复
declare @i datetime
set @i=2010-6-6
print @i

显示1905-06-22 12:00:00
lcooc 2006-05-17
  • 打赏
  • 举报
回复
declare @i varchar(100)
set @i=2010-6-6
print @i


显示1998
godfather_wang 2006-05-17
  • 打赏
  • 举报
回复
日期应该用引号''括起来.如 madeDate>2008-8-8 10:10:12 肯定会报错,如过写成madeDate>'2008-8-8 10:10:12'就是正确的了!!
sqllong 2006-05-17
  • 打赏
  • 举报
回复
zlp321002()
itblog(^ω^)
假如是精度的问题,那我没加“”,2010-6-6这个值被处理成多少了呢?
谢谢
itblog 2006-05-17
  • 打赏
  • 举报
回复
加上单引号的话,系统认为是按日期型数据格式插入到表,如果不加,系统不识别数据是什么类型,然后强制转换成日期型的数据.

相当于cast(2002-08-08 as datetime) or convert(datetime,2002-08-08 )
zlp321002 2006-05-17
  • 打赏
  • 举报
回复
--是精度的问题.两边数据类型要一致.你可以使用Cast(字段 as datetime) 强制转换下.
sqllong 2006-05-17
  • 打赏
  • 举报
回复
aw511(点点星灯)

我的问题关键是:1、2010-6-6 这样一个日期纪录加“”与不加“”之间有什么区别
2、为什么不加“”也能显示查询结果;


谢谢你的回答哈


希望大家继续帮帮忙,3Q
xeqtr1982 2006-05-17
  • 打赏
  • 举报
回复
日期常量需要加''
jasonren 2006-05-17
  • 打赏
  • 举报
回复
nod
liangpei2008 2006-05-16
  • 打赏
  • 举报
回复
正解!
点点星灯 2006-05-16
  • 打赏
  • 举报
回复
--对比就知道了
use Northwind

select * from dbo.Orders where orderdate>1996-7-4 order by orderdate

select * from dbo.Orders where orderdate>'1996-7-4' order by orderdate




--正确的
select * from dbo.Orders where orderdate>'1996-07-04' order by orderdate
--相当于
select * from dbo.Orders where orderdate>'1996-07-04 00:00:00.000' order by orderdate

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧