Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server 2008中使用between函数时出现问题_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server sql server 2008中使用between函数时出现问题

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

我正在使用asp.net 2005和Microsoft SQL Server2008开发一个web应用程序。我需要一个从数据库中获取给定范围内的数据的帮助

我的表中的日期字段是VARCHAR(25)类型,存储的日期格式是dd-mm-yyyy。当我在SQL查询中使用BEVERY子句时,它没有给出所有数据,即where子句中的日期条件不能正常工作

而我的客户要求保持日期格式为dd-mm-yyyy,并根据给定范围获取数据

所以请帮我解决这个问题,在这种情况下我该怎么办

SQL查询:

@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行转换失败。