Sql server sql server 2008中使用between函数时出现问题
我正在使用asp.net 2005和Microsoft SQL Server2008开发一个web应用程序。我需要一个从数据库中获取给定范围内的数据的帮助 我的表中的日期字段是VARCHAR(25)类型,存储的日期格式是dd-mm-yyyy。当我在SQL查询中使用BEVERY子句时,它没有给出所有数据,即where子句中的日期条件不能正常工作 而我的客户要求保持日期格式为dd-mm-yyyy,并根据给定范围获取数据 所以请帮我解决这个问题,在这种情况下我该怎么办 SQL查询:Sql server sql server 2008中使用between函数时出现问题,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我正在使用asp.net 2005和Microsoft SQL Server2008开发一个web应用程序。我需要一个从数据库中获取给定范围内的数据的帮助 我的表中的日期字段是VARCHAR(25)类型,存储的日期格式是dd-mm-yyyy。当我在SQL查询中使用BEVERY子句时,它没有给出所有数据,即where子句中的日期条件不能正常工作 而我的客户要求保持日期格式为dd-mm-yyyy,并根据给定范围获取数据 所以请帮我解决这个问题,在这种情况下我该怎么办 SQL查询: @datefrom
@datefrom varchar(15), // parameter in the procedure
@dateto varchar(15)
set @sql = '';
set @sql = @sql + 'SELECT * FROM ven_timesheetreportmaster vtsrm WITH (nolock)
INNER JOIN ven_descriptionmaster_timesheet vdmts ON vdmts.description_id = vtsrm.description_id '
set @sql = @sql + ' WHERE vtsrm.entry_date BETWEEN ''' + @datefrom + ''' AND ''' + @dateto + ''' '
if ( @emp_id !='0')
set @sql = @sql + ' AND vtsrm.emp_id =' + @emp_id + ' '
在venu timesheetreportmaster
表中,entry\u date
是varchar
数据类型
如果我传递值
@date from : 01-05-2011
@date to : 31-05-2011
它向我显示了从4月到日期的数据库中的所有值您在varchar(25)上进行了字符串比较,而不是像预期的那样进行日期比较。也就是说,字符串“06-06-2011”在字符串“31-05-2011”之前 添加一些样式为112的转换,并比较实际日期
或者修复您的数据。。。应在客户端代码中设置格式
dd-mm-yyyy
,数据库应为本机日期/时间类型。您在varchar(25)上有一个字符串比较,而不是与预期完全一致的日期比较。也就是说,字符串“06-06-2011”在字符串“31-05-2011”之前
添加一些样式为112的转换,并比较实际日期
或者修复您的数据。。。应在客户端代码中设置格式dd-mm-yyyy
,数据库应为本机日期/时间类型
由于您的查询正在检索四月
月份数据
所以请检查内部连接
质疑
或者只给出两种格式的样本数据
桌子
由于您的查询正在检索四月
月份数据
所以请检查内部连接
质疑
或者只给出两种格式的样本数据
桌子
如果它是一个日期-为什么它不是一个
DATETIME
??这会让事情变得更简单…我现在正试图将其更改为datetime数据类型..另外:您是按照标题和标签指示使用SQL Server 2008,还是按照您的帖子所说的2005?!?!?!SQL Server 2008引入了许多与日期相关的新数据类型,如date
(仅针对日期-无时间组件),这可能会有所帮助。很抱歉,这是一个打字错误,是SQL Server 2008选择月份('01-05-2011')
返回什么?如果是日期-为什么不是DATETIME
??这会让事情变得更简单…我现在正试图将其更改为datetime数据类型..另外:您是按照标题和标签指示使用SQL Server 2008,还是按照您的帖子所说的2005?!?!?!SQL Server 2008引入了许多与日期相关的新数据类型,如date
(仅针对日期-无时间组件),这可能会有所帮助。很抱歉,这是一个打字错误,是SQL Server 2008,选择月份('01-05-2011')
返回什么?您好,我试过这样做,(1):ALTER TABLE[dbo].venu timesheetreportmaster ALTER列updated_date datetime(2):update venu timesheetreportmaster set updated_date=CONVERT(datetime,updated_date,103)。。以上两种说法都给了我错误。。错误消息:从字符串转换日期和/或时间时,Msg 241,级别16,状态1,第2行转换失败。您好,我这样尝试过,(1):ALTER TABLE[dbo]。ven_timesheetreportmaster ALTER列update_date date datetime(2):update ven_timesheetreportmaster set update_date=CONVERT(datetime,update_date,103)。。以上两种说法都给了我错误。。错误消息:从字符串转换日期和/或时间时,Msg 241,级别16,状态1,第2行转换失败。