50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

اجرا کوئری با شرط خاص

سلام

فرض کنید جدول زیر را داریم

CREATE TABLE [dbo].[test1](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Name] [nvarchar](50) NULL,
	[Date] [Date] NULL,
	[Type] [nvarchar](50) NULL,
	[Time] [Time](7) NULL,
 CONSTRAINT [PK_test1] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

INSERT INTO [dbo].[test1] VALUES  ( 'ali','2017-07-23','a','10:20')
INSERT INTO [dbo].[test1] VALUES  ( 'ali','2017-07-23','b','10:45')
INSERT INTO [dbo].[test1] VALUES  ( 'ali','2017-07-23','c','17:20')
INSERT INTO [dbo].[test1] VALUES  ( 'ali','2017-07-23','d','17:35')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','d','10:20')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','a','10:45')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','b','17:20')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','c','17:35')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','d','10:20')
INSERT INTO [dbo].[test1] VALUES  ( 'reza','2017-07-23','b','10:45')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','c','17:20')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','d','17:35')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','a','10:20')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','b','10:45')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','c','17:20')
INSERT INTO [dbo].[test1] VALUES  ( 'hasan','2017-07-23','d','17:35')

حال دستوری می خواهم بنویسم که براساس نام وتاریخ باشد و شرط دیگر ان اینگونه باشد

که تفاضل زمان a,b بیشتر از 20 دقیقه باشد(و یا تفاضل زمان c,d بیشتر از 20 دقیقه باشد)

چگونه باید این دستور را بنویسم

باتشکر

پرسیده شده در 1396/06/25 توسط

3 پاسخ

0

سلام

a مثلا نام شخصی است

بله با یک تاریخ خاص گزارش بگیرم

پاسخ در 1396/06/25 توسط
2

با سلام

کوئری اول بر استس یک تاریخ مشخص :

/*کوئری اول بر اساس یک تاریخ مشخص*/
SELECT TOP 1000 [ID]
      ,[Name]
      ,[Date]
      ,[Type]
      ,[Time]
  FROM [db-itpro].[dbo].[test1]
  where [Date]='2017-07-23'

کوئری دوم بین دو تاریخ مشخص :

/*کوئری دوم بر اساس دو تاریخ مشخص*/
SELECT TOP 1000 [ID]
      ,[Name]
      ,[Date]
      ,[Type]
      ,[Time]
  FROM [db-itpro].[dbo].[test1]
  where [Date] between '2017-07-20' and '2017-07-30' /*از بیستم تا سی ام رو در نظر گرفتیم*/

کوئری سوم :

  /*کوئری سوم بر اساس نام و تاریخ*/
  SELECT TOP 1000 [ID]
      ,[Name]
      ,[Date]
      ,[Type]
      ,[Time]
  FROM [db-itpro].[dbo].[test1]
  where [Date]='2017-07-23' and Name=N'ali'

کوئری چهارم :

با استفاده از این تابع می تونید ابتدا واحد مقایسه ساع و تاریخ و و مشخص کنید و ارگومان دوم و سدوم به ترتیب ساعت اول و ساعت دوم هستند که باید تفاضلشان محاسبه شود :

  select DATEDIFF(MINUTE,'10:20','10:40')
پاسخ در 1396/06/30 توسط
0

سلام و عرض ادب، منظورتون از تاریخ a و b چیه؟ میخوایید تاریخ داخل جدول رو با یک تاریخ دلخواه کوئری بگیرید؟

پاسخ در 1396/06/25 توسط

پاسخ شما