0
点赞
收藏
分享

微信扫一扫

视图--sql String类型的日期数据如何与当前日期比较查询

冬冬_79d4 2022-02-28 阅读 41

    

日期数据在Sql Server数据库中不都是以日期类型保存的,如果数据库中保存日期字段的数据类型为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?总结有以下方法

(1)方法一

这个方法很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为adddate,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如"2016-2-22",那么可以直接写:where adddate>'2016-02-22',这种方法很直观,当然也需要在格式上有所规范,比如,如果日期是2016年2月22日,就必须将日期保存为2016-02-22,否则比较的时候容易出错。

(2)方法二

利用Sql提供的日期转换函数:CONVERT (<data_ type>[ length ], <expression> [, style])
1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2)length用于指定数据的长度,缺省值为30。 
3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如果用这种方法来判断某一个字段的话,则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写:where (CONVERT(varchar, adddate) >= CONVERT(varchar, GETDATE())) 。
     大师傅 或许5分钟可以解决的技术问题, 您搞半天才勉强整好,这就是您的技术水平?  绝对的二把刀不是吗. 

	create view View_Limit as
		select * from limit
// 1 测试字段1日期小于当前日期. 当前日期的获取为8位数字
// 2字段2日期 小于等于当前日期. 
		where (convert(varchar(8),测试字段1,12) < convert(varchar(100),getdate(),12) ) and 
		(convert(varchar(8),测试字段2,12) <= convert(varchar(100),getdate(),12) ); 

效果

 

 

举报

相关推荐

0 条评论