2011-05-18 92 views
1

我试着从sql表达式中得到一个表中的记录。 这里是SQL查询,我知道:SQL语句中声明变量

DECLARE @startDate as DATETIME, @EndDate as DATETIME 

@startDate = GetDate(); 
@ENdDate = DATEADD(m,1,@startDate) 

select * from table where (columnname between @startdate and @enddate) 

我知道,你必须在同一时间发送一个脚本,但你怎么能在SQL CE(我猜它不接受申报)声明变量?

回答

0

我不熟悉SQL-CE,但我认为你错过了一些Set语句。 试试这个

DECLARE @startDate as DATETIME, @EndDate as DATETIME 

Set @startDate = GetDate(); 
Set @ENdDate = DATEADD(m,1,@startDate) 

select * from table where (columnname between @startdate and @enddate) 

更新Using Parameters in Queries从MSDN SQL CE参考。由于Declare不是有效的关键字,因此您需要将查询作为应用程序本身的参数化版本。

select * from table where (columnname between ? and ?)

+0

DECLARE没有在SQL CE – alice7 2011-05-18 16:43:49

+0

允许@ alice7阅读更多关于它之后,SQL-CE是非常有趣的,但非常有限。 – 2011-05-18 20:41:06

0

看看后How do I populate a SQL Server Compact database? ,看看是否工具引用有可能帮助你。

+0

其实我以为是用这样的东西:从数据库GetAll记录(不是一个明智的想法)。然后使用list.FindAll(Object =>(Object.Date DateTime.Now));这将给出确切的结果。 thnx为您的建议nikadim – alice7 2011-05-18 19:54:55

0

如果你把它通过应用程序(我不知道你是如何读取数据)

准备好您的查询就像这样:

select * from table where (columnname between ? and ?) 

,但我不知道,如果你能使用between关键字。可能是你需要改变这一点。

,那么你需要添加SqlCeParameter对象是这样的:

cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.DateTime, myDate));