convert(varchar(30),字段,23)
查询的时候用的.
select convert(varchar(30),字段,23) from 表
显示的格式就是日期
查找的话
用 select * from 表 where [date] like '%2010-7-12%'
或者select * from 表 where charindex(convert(varchar(20),'2010-7-12'),[date])
这两种都可以
datetime 和 smalldatetime区别
datetime 从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。
smalldatetime 从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。
所以改为smalldatetime仍满足不了需求,并将时间范围缩小了。
具体做法:
SELECT CONVERT(VARCHAR(10), GETDATE(), 121)
其中的GETDATE()表示当前时间,可根据需要修改;121的含义参见
http://www.w3school.com.cn/sql/func_convert.asp。
若放在where部分,如下
SELECT * FROM XXX WHERE CONVERT(VARCHAR(10), [date], 121) = '2010-7-12
'
这里最关键的是将一个时间通过CONVERT函数进行转换。
用datetime一定会出现你这种结果的。
第一是把类型改了,就是楼上说的,我就不说了。
第二就是在显示这个时间的地方做一下字符串的截取就可以了,有方法可以直接截取的的。
显示的时候处理一下
Convert.ToDateTime(row["Date"]).ToString("yyy-MM-dd");
数据库里datetime的数据类型改为date就可以了