SQL Server日期查询时的日期格式转换 问题提出: 经常会有这样的查询要求,输入或者日历控件产生的日期格式为 yyyy-mm-dd,而数据库中的字段是datetime类型,即yyyy-mm-dd hh:mm:ss。如果简单的使用between语句或者=语句进行查询,查询结果可能是错误或者数据不全。 假设 数据库中有 2008-2-27 日的数据,但直接使用 fielddate='2008-2-27' 或者使用 between '2008-2-27' and '2008-2-27'将不能查到该天的数据。 问题解决: 使用SQL Server提供的Convert函数进行转换,由于2008-02-27最长是10位,所以使用如下语句 convert(varchar(10),fielddate,121))进行转换,其中fielddate为数据表的字段名。这样在查询时数据库得到参数后先自动将数据库内的信息转换为yyyy-mm-dd格式的10位字符,只要与参数相同即可返回查询结果.而convert中的121是指将datetime类型转换为char类型时获得包括世纪位数的4位年份。 Convert函数的一些说明,以下资料来源于网络 不带世纪数位 (yy)带世纪数位 (yyyy) 标准 输入/输出**-0 或 100 (*) 默认值mon dd yyyy hh:miAM(或 PM)1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-mm-yy6106-dd mon yy7107-mon dd, yy8108-hh:mm:ss-9 或 109 (*) 默认值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)10110美国mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13 或 113 (*) 欧洲默认值 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)14114-hh:mi:ss:mmm(24h)-20 或 120 (*) ODBC 规范 * 默认值( ** 当转换为 *** 专门用于 XML。对于从 使用 CONVERT: CONVERT (data_type[(length)], expression [, style]) select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\') 20040912110608 select CONVERT(varchar(12) , getdate(), 111 ) 2004/09/12 select CONVERT(varchar(12) , getdate(), 112 ) 20040912 select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12 select CONVERT(varchar(12) , getdate(), 101 ) 09/12/2004 select CONVERT(varchar(12) , getdate(), 103 ) 12/09/2004 select CONVERT(varchar(12) , getdate(), 104 ) 12.09.2004 select CONVERT(varchar(12) , getdate(), 105 ) 12-09-2004 select CONVERT(varchar(12) , getdate(), 106 ) 12 09 2004 select CONVERT(varchar(12) , getdate(), 107 ) 09 12, 2004 select CONVERT(varchar(12) , getdate(), 108 ) 11:06:08 select CONVERT(varchar(12) , getdate(), 109 ) 09 12 2004 1 select CONVERT(varchar(12) , getdate(), 110 ) 09-12-2004 select CONVERT(varchar(12) , getdate(), 113 ) 12 09 2004 1 select CONVERT(varchar(12) , getdate(), 114 ) 11:06:08.177 (责任编辑:admin) |