sql日期问题

Mark杨 2010-05-09 11:21:09
表数据

time nvarchar(20)
2010-5-6
2010-5-7
2010-5-8
2010-5-10
2010-5-11

把>= 2010-5-10 的那两个数据读出来


由于不是dataTime类型,进行的是字符串的比较.


select * from t1 where 时间 >= '2010-5-10'
select * from t1 where CONVERT(varchar,时间,120) >= '2010-5-10'


查出所有的了

要怎么写啊?
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hui_hui_2007 2010-05-09
  • 打赏
  • 举报
回复
对了,转成日期型比较就行了。
Mark杨 2010-05-09
  • 打赏
  • 举报
回复
可以了 用tony的说的方法 就可以转了 我原来转错了
hui_hui_2007 2010-05-09
  • 打赏
  • 举报
回复
我想,必须先要把月日全变成2位吧。否则不好处理,因为你是字符串型,不是日期型呀
htl258_Tony 2010-05-09
  • 打赏
  • 举报
回复
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-05-09 11:24:08
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
----------------------------------------------------------------------------------

--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([time] [nvarchar](20))
INSERT INTO [tb]
SELECT '2010-5-6' UNION ALL
SELECT '2010-5-7' UNION ALL
SELECT '2010-5-8' UNION ALL
SELECT '2010-5-10' UNION ALL
SELECT '2010-5-11'

SELECT * FROM [tb]

-->SQL查询如下:
select * from tb where CONVERT(datetime,[time]) >= '2010-5-10'

select * from tb where cast([time] as datetime) >= '2010-5-10'

/*
time
--------------------
2010-5-10
2010-5-11

(2 行受影响)
*/
Mark杨 2010-05-09
  • 打赏
  • 举报
回复
谢了 晕 不能马上结贴
htl258_Tony 2010-05-09
  • 打赏
  • 举报
回复
select * from t1 where CONVERT(datetime,时间) >= '2010-5-10'

34,591

社区成员

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

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