Member 12183079 Ответов: 2

Как искать запись из столбца дата время только по дате


ВЫБРАТЬ РАЗЛИЧНЫЕ LOGINTIME ,РП.Идентификатор пользователя,РП.Название организации,РП.EmailId,РП.Регистрационный номер,см.Название
От ExporterRegistration ER
Внутреннее соединение IPTRACK IP на ER.UserId=IP.[Пользователь] внутреннее соединение [местоположения].[StatesMaster]
См на СМ.StateId=РП.StateId
ГДЕ IP.LOGINTIME МЕЖДУ '2017-01-01' И '2017-12-31'
И IP.USERTYPE='экспортер' и IP.[Статус]='Y'

выше приведен мой запрос --
выход---
LOGINTIME имя пользователя название организации EmailId наименование регистрационный номер
2017-03-29 17:00:48.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-29 17:29:02.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-30 10:22:46.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-30 11:16:23.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-30 11:25:26.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-30 11:30:16.000 1 м/с. фауна Интернэшнл faunainternationalhr@gmail.com TN2/ME/033/04 Тамилнаду
2017-03-30 14:32:13.000 1206 Афзал Кадер и компания afzalkader@libertyfoods.ina нуль Андхра Прадеш
2017-03-30 14:40:31.000 771 Kalyan Aqua & Marine Exports India P Ltd kalyanaquafarms@gmail.com AP1/MT/143/12 Андхра-Прадеш
2017-03-30 14:53:16.000 771 Kalyan Aqua & Marine Exports India P Ltd kalyanaquafarms@gmail.com AP1/MT/143/12 Андхра-Прадеш
2017-03-30 14:56:49.000 543 Kader Exports Pvt. Ltd. afzalkader@libertyfoods.in MA1/MT/009/05 Махараштра

Что я уже пробовал:

я хочу найти сведения из этой даты 2017-03-29 17:00:48.000 только для определенных строк
не выбирайте несколько строк, как будто он не найдет строку из даты и времени
он будет выбирать данные только для даты

так что, пожалуйста, помогите мне-

2 Ответов

Рейтинг:
20

Pradeep Arthanari

Вы можете попробовать это..

Если вы примените distinct к части datetime, она вернет все строки. Так что его лучше преобразовать/бросить в дату.

declare @LoginTable table (LOGINTIME DATETIME,UserId int,CompanyName varchar(100),EmailId varchar(50),
RegistrationNumber varchar(50),Name Varchar(50))

INSERT INTO @LoginTable VALUES('2017-03-29 17:00:48.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-29 17:29:02.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-30 10:22:46.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-30 11:16:23.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-30 11:25:26.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-30 11:30:16.000',1,'M/s. Fauna International','faunainternationalhr@gmail.com','TN2/ME/033/04','Tamilnadu')
INSERT INTO @LoginTable VALUES('2017-03-30 14:32:13.000',	1206,'afzal kader and company','afzalkader@libertyfoods.ina',NULL,'Andhra Pradesh')
INSERT INTO @LoginTable VALUES('2017-03-30 14:40:31.000',	771	,'Kalyan Aqua & Marine Exports India P Ltd',' kalyanaquafarms@gmail.com','AP1/MT/143/12','Andhra Pradesh')
INSERT INTO @LoginTable VALUES('2017-03-30 14:53:16.000',	771	,'Kalyan Aqua & Marine Exports India P Ltd ','kalyanaquafarms@gmail.com',' AP1/MT/143/12','Andhra Pradesh')
INSERT INTO @LoginTable VALUES('2017-03-30 14:56:49.000',	543	,'Kader Exports Pvt. Ltd.','afzalkader@libertyfoods.in','MA1/MT/009/05','Maharashtra')

SELECT DISTINCT CAST(LOGINTIME AS DATE) AS distLoginDate,ER.UserId,ER.CompanyName,ER.EmailId,ER.RegistrationNumber,ER.Name
FROM @LoginTable ER 
WHERE ER.LOGINTIME BETWEEN '2017-01-01' AND '2017-12-31'
GROUP BY LOGINTIME, ER.UserId,ER.CompanyName,ER.EmailId,ER.RegistrationNumber,ER.Name


Member 12183079

Спасибо

Рейтинг:
1

David_Wimbley

Я создал некоторые примеры данных только с помощью столбца времени вместо того, чтобы пытаться реплицировать ваш набор данных.

В основном в вашем предложении WHERE, в вашем заявлении BETWEEN вам нужно привести свои начальные/конечные значения в качестве даты и времени, чтобы учесть дату и время в вашем предложении where. Кроме того, в вашем примере запроса вы не учитываете время в предложении where, а учитываете только дату.

В приведенном ниже примере кода я включил несколько примеров запросов, включая запрошенный сценарий, так что, надеюсь, это сделает то, что вам нужно сделать, более понятным.

DECLARE @TestData TABLE (
	Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	LoginTime DATETIME NULL
);

INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-29 17:00:48.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-29 17:29:02.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 10:22:46.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 11:16:23.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 11:25:26.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 11:30:16.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 14:32:13.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 14:40:31.000' )
INSERT INTO @TestData ( LoginTime ) VALUES  ( '2017-03-30 14:53:16.000' )

--Select exact match where start/end values are same
SELECT * FROM @TestData WHERE LoginTime BETWEEN CAST('2017-03-29 17:00:48.000' AS DATETIME) AND CAST('2017-03-29 17:00:48.000' AS DATETIME)

--Or select exact match by making login time = param
SELECT * FROM @TestData WHERE LoginTime = CAST('2017-03-29 17:00:48.000' AS DATETIME)

--Should onl ypull 5 records by time of the date
SELECT * FROM @TestData WHERE LoginTime BETWEEN CAST('2017-03-29 17:29:02.000' AS DATETIME) AND CAST('2017-03-30 11:25:26.000' AS DATETIME)

--Ignores time, only pulls by date
SELECT * FROM @TestData WHERE CAST(LoginTime AS DATE) BETWEEN CAST('2017-03-29 17:29:02.000' AS DATE) AND CAST('2017-03-30 11:25:26.000' AS DATE)


Member 12183079

это хорошо но я хочу только две записи
Как на свидании с они мудрым
1-2017-03-29
2-2017-03-30

тогда как же это сделать

David_Wimbley

Вам нужно прояснить, чего вы хотите. Просто сказав, что вам нужны 2 записи с датой 3/29 и 3/30, вы, похоже, хотите произвольно вытянуть данные, выбрав 2 случайные записи, где одна дата равна 3/29, а другая-3/30, и это не имеет смысла.