sql日期的模糊(like)查询,字断内日期的格式为yyyy-m-d,针对1日与10几日,2日与20几日怎么区分?

比如说吧,数据有2011-3-1,2011-3-2,2011-3-12,2011-3-25。。。用3-1搜,结果中有2011-3-1,2011-3-12,如何才只出现2011-3-1??

第1个回答  推荐于2021-01-10
SQL Server CONVERT() 函数
SQL Server Date 函数
定义和用法
CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法
CONVERT(data_type(length),data_to_be_converted,style)data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID Style 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM
实例
下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果类似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

用121转换一下,就是中国人习惯的格式了,且3月是03,不出现位数不同的问题,呵呵追问

但用户在搜索时只用3-1的格式,不能用03-01或0301等格式

追答

sql中用convert处理,C#中用format格式化为与121相同的格式的字符串,再比较。
C#日期格式,http://blog.163.com/s-jf82105/blog/static/1305685052009111815752833/,其它语言有类似的处理方法。
用户中有不同语言的字符集和地区日期的输入习惯,这种方法,是在程序和数据库中统一为中国的习惯,避免了不同地区和习惯的问题。

追问

这个方法呢,是行不通滴。

追答

呵呵,原因呢,是编程麻烦吗?呵呵,分无所谓。

追问

不是的,如2013-1-2用3-1也要可以被搜到。只是不要出现3月的10多日的。很麻烦的

追答

呵呵,需求问题,想大而全,除非枚举,否则数据不准,无它意。
刚才的方法,设想出几种可能,用or的方法,写在where条件里,就可以了。

参考资料:http://www.w3school.com.cn/sql/func_convert.asp

本回答被提问者采纳
第2个回答  2011-04-02
like '%-3-1'
第3个回答  2011-04-02
比较下大小吧。。。
相似回答