Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
1

SQL and datetime

11.06.2015, 10:12. Показов 1953. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе утро бойцы!


Подскажите мне такую вещь.... есть у меня значится БД в кoторой одна из таблиц содержит столбец типа datetime

Пишу запрос ....например

SQL
1
   SELECT * FROM DB4.dbo.data WHERE DATE='12.09.2014 10:10:00'
все работает нормально... а вот я например хочу просто по дню без времени...или по месяцу всему...

пробовал писать в дате что-то типо %12.09.2014% или 12.0_.2014 10:10:00 .... выдает ошибку :Ошибка преобразования даты или времени из символьной строки.



Подскажите как быть... спс
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2015, 10:12
Ответы с готовыми решениями:

Font in datetime (MS SQL)
не уверен, что верный форум, может быть вопрос больше по php, но все же.. Есть маленькая (?)...

MS SQL Что не так с datetime?
create table Persona ( PersKods varchar (11), Vards varchar (30) not null, Uzvards varchar (30)...

MS SQL, Perl, Datetime, BLOB
Окружение следующее: MS Windows 2000 AS, MS SQL 2000, IIS, ActivePerl. Сначала использовал...

Работа с datetime в SQL и ASP
Всем здрасте! Вопрос: для обновления информации в базе SQL (которая содержит строку с данными...

6
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
11.06.2015, 10:21 2
Цитата Сообщение от OTT Посмотреть сообщение
Пишу запрос ....например
T-SQL
1
SELECT * FROM DB4.dbo.DATA WHERE DATE='12.09.2014 10:10:00'
все работает нормально...
Это случайность. Заданная строка с датой может трактоваться сервером неоднозначно.
1
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
11.06.2015, 10:27  [ТС] 3
ооох далеко это не случайность))))) кучу времени сидел и писал по разному даты ))) он меня все время посылал.... даж с бд копировал и не подходило там ячейка выглядит 2014-09-12 10:10:00.000 ...... но потом я через C# обратился к БД забрал значение и собственно все заработало.....но вот как заменить часть даты осталось загадкой
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
11.06.2015, 10:32 4
Лучший ответ Сообщение было отмечено OTT как решение

Решение

Без времени:
T-SQL
1
WHERE CAST([DATE] AS DATE)='20140912'
или
T-SQL
1
WHERE [DATE]>='20140912' AND [DATE]<'20140913';
За месяц:
T-SQL
1
2
DECLARE @M DATETIME='20140901';--Сентябрь 2014 года
SELECT * FROM DB4.dbo.DATA WHERE [DATE]>=@M AND [DATE]<DATEADD(MONTH,1,@M);
Добавлено через 4 минуты
Цитата Сообщение от OTT Посмотреть сообщение
ооох далеко это не случайность))))) кучу времени сидел и писал по разному даты ))) он меня все время посылал.... даж с бд копировал и не подходило там ячейка выглядит 2014-09-12 10:10:00.000 ...... но потом я через C# обратился к БД забрал значение и собственно все заработало.....но вот как заменить часть даты осталось загадкой
Прежде всего надо внимательно прочитать документацию
А потом применять универсальные форматы 'YYYYMMDD hh:mm:ss.nnn', 'YYYY-MM-DDThh::mm:ss.nnn' и т.п.
Всегда!
1
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
11.06.2015, 10:35  [ТС] 5
Спасиб!!! не могли б для понимаю объяснить смысл CAST([DATE] AS DATE)

и вот за месяц идет запрос..... типо дата больше или равна заданной и меньшее DATEADD(MONTH,1,@M).... как это правильно понять? типо добавляем 1 месяц в дату?
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
11.06.2015, 10:49 6
Цитата Сообщение от OTT Посмотреть сообщение
Спасиб!!! не могли б для понимаю объяснить смысл CAST([DATE] AS DATE)

и вот за месяц идет запрос..... типо дата больше или равна заданной и меньшее DATEADD(MONTH,1,@M).... как это правильно понять? типо добавляем 1 месяц в дату?
1. Смысл простой - в типе DATE нет времени!
2. Больше и равна заданной, но! Задано-то первое число нужного нам месяца! Значит, начиная с 0 часов 0 минут 0 секунд этого месяца
3. Добавляем месяц и берём всё, что строго меньше 0 часов 0 минут 0 секунд этого (то есть, следующего относительно заданного) месяца!
Ясно, что отбираем весь нужный месяц, не обращая внимания на время.

Я вот не понимаю, что здесь непонятного!

Добавлено через 6 минут
Забыл пояснить, что все эти манипуляции для того, чтобы в запросе можно было бы применить индекс по дате, если его, разумеется, сделать.
Такое условие (предикат) обозначают обычно аббревиатурой SARGable

К примеру, если будете использовать условия, накладываемые на функции DATEPART(), YEAR(), MONTH(),
то использовать индекс для оптимизации запроса сервер не сможет.
1
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
15.06.2015, 10:40  [ТС] 7
Спасибо с этим разобрался. А как с минутами правильно работать ? например мне каждые 20 надо а не все .

И еще хотел спросить на счет '%' и '_'. Их не используют в дате ?

Добавлено через 17 минут
SQL
1
SELECT * FROM AgatDB4.dbo.data_raw WHERE [DATE]=DATEADD(MINUTE,+19,@M);
так он просто 19 минут плюсует...как б это в цикл завести?

Добавлено через 33 минуты
SQL
1
2
3
SELECT * FROM AgatDB4.dbo.data_raw WHERE [DATE]=@M
SET @M=DATEADD(MINUTE,+19,@M);
SELECT * FROM AgatDB4.dbo.data_raw WHERE [DATE]=@M


Что-то типо этого... ток в одну таблицу и не один раз прибавлять минуты
0
15.06.2015, 10:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2015, 10:40
Помогаю со студенческими работами здесь

Как в T-SQL перекодировать datetime в nvarchar?
пробую перекодировать такую дату 2002-12-12 03:12:12.000 ошибка: Incorrect syntax near '03' ...

ms sql 2012 datetime выборка по времени
как выбрать записи по времени из столбца с типом datetime?

По каким правилам MS SQL преобразовывает число в datetime?
Число 37986 получается в VB из строки кодом: CDec(DateValue('31.12.03')) (Кстати...

MS SQL. Преобразование значений при выводе данных из столбца datetime
Добрый день! Подскажите, пожалуйста, никак не могу разобраться. Уже несколько часов пытаюсь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru