根据日期约束从数据库中过滤和显示gridview中的数据

时间:2014-05-05 11:54:30

标签: c# sql sql-server datetime

这是我的表格:

create table users
(
userid int identity(1,1) primary key,
username varchar(150),
password varchar(20),
email varchar(150),
mobile varchar(50),
address varchar(2000),
service_start_date datetime,
createdate datetime,
modifydate datetime,
deletedate datetime,
tablestatus varchar(50),
roles varchar(50)


)



create table service_transaction
(
srvid int identity(1,1),
srv_startdate datetime,
srv_enddate datetime,
script varchar(1000),
position_type varchar(100),
entryprice varchar(100),
targetprice varchar(100),
comments varchar(100),
srv_type varchar(100),
srv_status varchar(100),
createdate datetime,
modifydate datetime,
deletedate datetime,
tablestatus varchar(50)

)



create table usersubscription
(
sub_id int identity(1,1) primary key,
u_id int foreign key references users(userid), 
sub_startdate datetime,
sub_enddate datetime,
service_type varchar(100),
createdate datetime,

modifydate datetime,
deletedate datetime,
tablestatus varchar(50)
)

我需要一个查询来根据订阅开始日期和订阅结束日期过滤特定用户的服务事务。请帮帮我。

1 个答案:

答案 0 :(得分:0)

我认为你需要对表格进行标准化。根据我对您的问题的理解,尝试以下内容。

DECLARE @filterDate AS DATETIME
SET @filterDate = '2014-05-05 17:04:45'
SELECT * FROM service_transaction AS ST
JOIN usersubscription AS US ON ST.srv_type = US.service_type
JOIN users AS U ON U.userid  = US.userid
WHERE @filterDate BETWEEN US.sub_startdate AND US.sub_enddate AND U.userid = '12345'

我添加了一个userId过滤器,您可以使用您要查询的userId替换12345。