powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Date-> поиск в "BD" по дате
24 сообщений из 24, страница 1 из 1
Date-> поиск в "BD" по дате
    #32027159
igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в "sql server" есть поле "date" и записано так"18/06/2001 6:05;24 pm".Нужно сделать поиск на событие между определенными числами...
буду благодарен за любую помощь
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027162
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... where date between '20010618 00:00:00' and '20010618 23:59:59'
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027167
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bol'shoe spasibo - tol'ko 4to takoe "20010618" ?
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027169
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'20010618 00:00:00' - это символьное представление даты в формате yyyymmdd hh:mm:ss.

declare @d1 datetime, @d2 datetime
set @d1 = '20010618 13:00:00'
set @d2 = '20010618 16:35:35'

select .... where date between @d1 and @d2 ...
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027173
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,
Skajem ya xochu napisat' sleduyudchee:

Select * from blyablya where DateUpdated>startdate and DateUpdate<endate

Ya pishu v srede ASP kogda ya pishu:
Select * from blyablya where DateUpdated>startdate and DateUpdate<endate
--> poluchayu pustoi resul'tat, a kogda pishu:
Select * from blyablya where DateUpdated>startdate --> vse rabotaet
Kogda pishu:
Select * from blyablya where DateUpdate<endate --> nichego ne rabotaet.
V@glyadit kak glupost', eto ne rabotaet kogda ya pol'zuyus' sravneniem "<"

Pomogi, esli znaesh...TX, Igor
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027183
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чудес не бывает. Не может сравнение > работать, а < - не работать
Давайте уточним
- поле "DateUpdated" таблицы какого все же типа
- какого типа переменные startdate и endate, и как вы их инициализируете
- есть ли в таблице действительно данные с DateUpdate<endate
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027190
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from sysobjects where crdate between '20010101 00:00:00' and '20010131 23:59:59'
select * from sysobjects where crdate > '20010101 00:00:00'
select * from sysobjects where crdate < '20010131 23:59:59'
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027214
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Ogromnoe spasibo za pomosh'!!!!!!!!!!!111
2.pole"DateUpdated" tipa "datetime".
"startdate" i "endate" - eto polya v forme kotor@e ya perevora4ivayu iz char v date s pomoshyu "CDate()" ili FormatDateTime(endate,2).dann@e v etih peremenn@h zapisan@ tak "dd/mm/yyyy". dal'she interesnei: prishel domoi, gde est' tol'ko Access - bilsya i dobilsya:
R_Thema.open"select * from Mailing Where DateUpdated < # " & FormatDateTime(to_day,2)& "# and DateUpdated > # " & FormatDateTime(from_day,2)& "#",- gde "R_thema" eto recordset "to_day" i "from_day" eto i est' peremenn@e, pri4em v formate dd/mm/yyyy, pri4em daje bez funkzii "FormatDateTime"
vse rabotaet verno, i problema moya b@la v tom 4to ne pisal znak "#" - kak ego dobavil vse rabotaet , ne znayu znaesh' li t@ ASP no na sql zdes' napisano sleduyushee:
select * from Mailing Where DateUpdated < #20/06/2005# and DateUpdated > #01/03/2000# v access rabotaet . vse poshel spat' v 4 utra mertv@i no dovol'n@i, - prihoju na robotu perevora4ivayu na sql server - ne rabotaet ...
1.znak "#" ne prinimaet, zamenil na " ' " vrode normal'no 2.na dann@e v formate dd/mm/yyyy reagiruet grub@m matom, pri4em za "date" eto ne s4itaet...
VOPROS: vse dolgno b@t' zapisano tol'ko kak " 'yyyymmdd hh:mm:ss'" ili est' eshe kakieto vozmojnosti?

samoe grustnoe , 4to eto moi 5 den' na novoi rabote , i moi perv@i proekt...

eshe raz ogromnoe spasibo za pomosh'!
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027222
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да резделитель даты # - это особенность Access-а, в MS SQL такого нет

VOPROS: vse dolgno b@t' zapisano tol'ko kak " 'yyyymmdd hh:mm:ss'" ili est' eshe kakieto vozmojnosti?

На конвертацию символьных представлений даты влияет установка сервера SET DATERORMAT в различных вариантах - mdy, dmy, ymd. Но мой вам совет: используйте yyyymmdd hh:mm:ss и вам не надо будет помнить о региональных установках.
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027253
igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ogromnoe spasibo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vse sdelal, vse rabotaet.
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027295
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того чтобы навсегда забыть о проблемах национализма в датах при передече даты из аксесс в sql очень удобно использовать дату в числовом формате.
правда по странному стечению обстоятельств с небольшой поправкой
long в аксессе - date в аксессе - date на mssql
0 - 0.0.0000 - 0.0.0000
1 - 31.12.1989 - 02.01.1900
2 - 01.01.1900 - 03.01.1900
итд
соответственно для аксесс можно написать

public function sqldata(data as date) as long
sqldata= clng(data)-2
end function

в самом деле для меня остается тайной что происходит при передаче значения типа числовое
1 конвертация его к sqldetetime и последующая выборка на основе существующего значения
2 sqldatetime преобразуется в числовое при выполнении с ним операций ?
3 sqldatetime хранится в числовом значении и преобразуется в дату требуемого формата при отображении результатов?
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027297
igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
v@nujden eshe raz prosit' o pomoshi....

zdelal poisk v "DB" :
" select * from Table where Date_Time between '20010101 00:00:00' and '20010131 23:59:59' order by Owner_ID "
no v Table odin i tot je Owner_Id povtoryaetsya mnogokratno... kak , pri v@she opisanom uslovii polu4it' kajd@i suchestvuyushii Owner_Id odin raz?

eshe raz spasibo za pomosh'!!!!!!!!
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027390
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2igor
select DISTINCT Owner_ID from Table where Date_Time between '20010101 00:00:00' and '20010131 23:59:59' order by Owner_ID

2АлексейК
Values with the datetime data type are stored internally by Microsoft SQL Server as two 4-byte integers. The first 4 bytes store the number of days before or after the base date, January 1, 1900 . The base date is the system reference date. Values for datetime earlier than January 1, 1753, are not permitted. The other 4 bytes store the time of day represented as the number of milliseconds after midnight.
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32027397
Igor.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WOW..... It's work!!!! thankssssssssssssssss!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028103
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
v@nujden vnov' zakid@vat' voprosami ....
select distinct insuredlastname, insuredfirstname, insuredid from ericom_log where entrytime between '20010101 00:00:00' and '20010131 23:59:59'
vse rabotaet, no teper' poyavilis' eti sam@e insuredlastname, insuredfirstname, insuredid t.e. Ivanov Ivan passport:5064287912. kak sdelat' poisk po vremeni i po dann@m?
zaranee spasibo za pomosh'!!!
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028155
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу понять, кто конечный потребитель всех этих заморочек с датами?
Это что, сидят тётки и QA пишут селекты, причем даты вводят в виде, указанном by Glory???
(кстати, если Glory покинет форум, это будет ужасной для всех нас(ламеров) потерей)
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028158
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. 4to takoe Lamer?
2.kone4n@i potrebitel' eto na4al'nik finansovogo otdela strahovoi kompanii, gde ya rabotayu, kotor@i ho4et znat' kto iz klientov,kogda i 4em pol'zovalsya v nashei finansovoi WEB sisteme. a eti dann@e zapisan@ v otdel'noi tablize - kotoraya sootvetstvenno avtomati4eski sostavlyaetsya iz log nashego WEB Servera.
3.a ya po neponimaniyu svoemu i bezop@tnosti moro4u golovu vmesto togo 4to b@ zadat' odin 4etkii vopros, no kak govorit'sya net uma s4itai kaleka

P.S. A Glory preogromneshee spasibo za terpenie i za to 4to gotova delit'sya znaniyami,- na 4to ne mnogie sposobn@!
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028161
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что Igor - это какой-то агент, подосланный испытать
терпение Glory-girl(?)...
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028164
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HA hA Ha ....
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028170
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Igor
Все просто
- для точного сравнения строковых значений
select distinct insuredlastname, insuredfirstname, insuredid
from ericom_log
where entrytime between '20010101 00:00:00' and '20010131 23:59:59'
and insuredlastname = 'Ivanov'

- для сравнения на вхождение
select distinct insuredlastname, insuredfirstname, insuredid
from ericom_log
where entrytime between '20010101 00:00:00' and '20010131 23:59:59'
and insuredlastname LIKE '%Ivanov%'

маска для оператора LIKE имеет много вариантов, которые можно посмотреть в BOL

Поиск можно организовать через процедуру, которой будут передаватся пареметры поиска
Приблизительно так

CREATE PROCEDURE dbo.sp_Search1
@period_begin char(17),
@period_end char(17),
@insuredlastname varchar(50)=NULL,
@insuredfirstname varchar(50)=NULL
AS

SELECT distinct insuredlastname, insuredfirstname, insuredid
FROM ericom_log
WHERE entrytime BETWEEN @period_begin and @period_end
AND insuredlastname = ISNULL(@insuredlastname, insuredlastname)
AND insuredfirstname = ISNULL(@insuredfirstname, insuredfirstname)
GO

exec sp_sp_Search1 '20010101 00:00:00', '20010131 23:59:59', 'Ivanov'

exec sp_sp_Search1 '20010101 00:00:00', '20010131 23:59:59', default, 'Ivan'

exec sp_sp_Search1 '20010101 00:00:00', '20010131 23:59:59', 'Ivanov', 'Ivan'


Предложенный вариант очень приблизителен, т.к. многое будет зависеть от струтруры и объема ваших таблиц, наличия/отсутсвия индексов и общей концепции вашей системы.

ЗЫ
Моя личная иерархия
Чайник(dummy) - человек, несведующий в какой-либо области, признающий это и стремящийся научится (так что в общефилосовском смысле все мы (не)много чайники)

Ламер(lamer) - чайник, который не признает себя таковым и поэтому особо не стремящийся учится

Ламо(-) - ламер, считающий себя специалистом в какой-то области и пытающийся учить других
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028173
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2RatTail
Не могу понять, кто конечный потребитель всех этих заморочек с датами? Это что, сидят тётки и QA пишут селекты

Все гораздо более прозаичней.
Клиентские приложения часто используют для передачи даты в процедуры не собственно тип дата(время) а преобразуют его в строку (наверное с целью не связыватся с определением параметров). Для такого преобразования часто используются функции данного приложения, которые могут преобразовывать дату в соответствии с региональными установками локальной машины. И вот "выяснение" - каким образом и во что была конвертирона дата - как раз может быть проблемой для sql сервера.
Поэтому IMHO гораздо проще договорится с разработчиками о конкретном формате представления типа дата(время) в символьных строках, во избежании авральных работ по изменению программ и процедур. Не факт, что это должен быть так рекомендуемый мной yyyymmdd hh:mm:ss (хотя я считаю его лучшим из-за того в том же CONVERT не нужно указывать дополнительо style), просто это должен быть формат удовлетворяющий и понятный всем.

2All
По поводу ника. В английской транскрипции он никак не связан с каким-либо именем собственным(напрямую разумеется)
http://dictionary.msn.com/find/entry.asp?search=glory
и поэтому не определяет мою половую принадлежность, а равно и мою сексуальную ориентацию.
За другие языки отвечать не могу
Хотя скрывать мне нечего - я мужеского полу (извините, если кого-нибудь разачаровал)
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028175
Igor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Glory:
ogromnoe spasibo !

vse moi variant@ ne rabotali potomu 4to pisal Ivanov vmesto 'Ivanov' ....
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028189
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor продолжает шутить...Ну что же...
Предлагаю объявить мораторий на топики про даты до лета этого года.
...
Рейтинг: 0 / 0
Date-> поиск в "BD" по дате
    #32028340
Konstantin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. cast((convert(char, getdate(), 101)) as datetime)
Вместо getdate подставляешь нужную дату, с форматом 101 тоже можешь поиграться, но это не принципиально.


2. SELECT * FROM Tablitsa WHERE (Kogda > @Togda) and (Kogda = CheckDate AND MyDate = и = '12/20/2001') AND (Kogda = '12/20/2001') AND (Kogda < '12/21/2001')


Это был бы идеальный вариант. Но почему-то WHERE Kogda LIKE '%12/20/2001%' отказывается находить запись с Kogda = '12/20/2001 11:20:34'
Должно ведь. Или я что-то не понимаю?
WHERE Kogda LIKE '%Dec 20 2001%'
Интересно. А почему? В каких форматах дату находит, а в каких нет? Разве по умолчанию дата перед применением LIKE переводится в строку вида "Dec 20 2001", a не в стандартный US-format "12/20/2001"?


p.s.
It is recommended that LIKE be used when you search for datetime values, because datetime entries can contain a variety of dateparts. For example, if you insert the value 19981231 9:20 into a column named arrival_time, the clause WHERE arrival_time = 9:20 cannot find an exact match for the 9:20 string because SQL Server converts it to Jan 1, 1900 9:20AM. However, the clause WHERE arrival_time LIKE ‘%9:20%’ does find it.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Date-> поиск в "BD" по дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]