Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ELEKTpoHuK,

и я не вижу буквы "T" в строке, представляющей дату, в Вашем исполнении.
Вы сами-то видите?!

Можно ещё писать без всяких функций и буквы "T" так: YYYYMMDD hh:mm:ss.nnn

А для новых типов DATETIME2, DATETIMEOFFSET и т.п. годится и Ваш формат.
Ну и для DATE то же самое.

Вообще, пройдитесь, наконец, по данным Вам ссылкам!
Там всё по-русски разжёвано до невозможности!
20 янв 14, 13:34    [15440349]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ELEKTpoHuK
Возможно. что он эту строку считает как CHAR? Может быть нужно попробовать при select сделать convert/cast. Попробую.
Какую "эту строку"?
Вы же не можете задать дату напрямую прямо типом DATETIME!
А только через неявное (или явное) преобразование строк, чисел и т.п.
20 янв 14, 13:37    [15440371]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
iap
t0.dateen_timeen_cast >='2014' and t0.dateen_timeen_cast <'20140201'

Этот вариант тоже ничего не выдает. Как будто сервер не воспринимает эту колонку как DATETIME. Но как тогда он ее воспринимает?
20 янв 14, 13:39    [15440389]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Я в ступоре!
поля
dateen 2 sys datetime
dateen_timeen_cast 4 sys datetime

То есть оба поля в Вьюхе являются DATETIME/
И при этом Выборка из этой Вьюхи по одному полю (dateen) срабатывает а по другому (dateen_timeen_cast) Не срабатывает.

SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 
20 янв 14, 14:24    [15440759]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
~
Guest
ELEKTpoHuK, а в чем заключается "несрабатывание", ошибку какую показывает?
20 янв 14, 14:30    [15440824]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
~
ELEKTpoHuK, а в чем заключается "несрабатывание", ошибку какую показывает?


Никакой ошибки - ничего не попадает в выборку.
20 янв 14, 14:32    [15440842]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ELEKTpoHuK
~
ELEKTpoHuK, а в чем заключается "несрабатывание", ошибку какую показывает?


Никакой ошибки - ничего не попадает в выборку.
Текст VIEW угадать надо?
И типы полей в таблицах.
20 янв 14, 14:39    [15440916]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
iap
ELEKTpoHuK
пропущено...


Никакой ошибки - ничего не попадает в выборку.
Текст VIEW угадать надо?
И типы полей в таблицах.



вот вьюха

CREATE VIEW dbo.____view_big_select 
AS
SELECT 
t0.NCAR, 
t0.dateen,
CAST(CAST(cast(t0.dateen as datetimeoffset) AS CHAR(10)) +'T'+ t0.timeen +':00' AS DATETIME) AS dateen_timeen_cast,
convert(datetime, convert(varchar(10), t0.DateEN, 127)+'T'+t0.TimeEN+':00.000', 127) AS dateen_timeen_cast_2,
t0.NTIR
FROM svh.dbo.prop_ent t0


Вот выборка из нее

SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen_timeen_cast between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 


а вот эта срабатывает
SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 


Типы данных dateen и dateen_timeen_cast показывает как DATETIME
20 янв 14, 14:45    [15440988]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
cast(t0.dateen as datetimeoffset) - это что за фигня ?
20 янв 14, 14:48    [15441017]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
t0.dateen, t0.timeen, t0.DateEN,t0.TimeEN - какого типа? Только точно.
Раз у Вас есть DATETIMEOFFSET, то версия сервера не меньше SQL2008.
Вообще проблем никаких не должно быть
20 янв 14, 14:56    [15441084]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
iap
t0.dateen, t0.timeen, t0.DateEN,t0.TimeEN - какого типа? Только точно.
Раз у Вас есть DATETIMEOFFSET, то версия сервера не меньше SQL2008.
Вообще проблем никаких не должно быть
Если делать всё правильно, имел я в виду
20 янв 14, 14:57    [15441091]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
ELEKTpoHuK
Вот выборка из нее

SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen_timeen_cast between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 



а вот эта срабатывает
SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 


SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen_timeen_cast2 between '2014-01-01 00:00:00' and '2014-01-31 23:59:00')
20 янв 14, 14:58    [15441100]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
iap
t0.dateen, t0.timeen, t0.DateEN,t0.TimeEN - какого типа? Только точно.
Раз у Вас есть DATETIMEOFFSET, то версия сервера не меньше SQL2008.
Вообще проблем никаких не должно быть


dateen 2 sys datetime 8 3
timeen 3 sys varchar 5 0
dateen_timeen_cast 4 sys datetime 8 3

Это точно - посмотрел структуру.
Мне тоже так казалось, но на выходе мне не удается сделать.
20 янв 14, 15:06    [15441171]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Glory
SELECT *
FROM svh.dbo.____view_big_select t0
WHERE
(t0.dateen_timeen_cast2 between '2014-01-01 00:00:00' and '2014-01-31 23:59:00')


Нет, не срабатывает.
20 янв 14, 15:08    [15441198]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
При этом даже самый простой
SELECT
t0.dateen+t0.timeen AS dateen_timeen,

Также дает тип данных DATETIME.
20 янв 14, 15:13    [15441258]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ох цж эти криворукие сказочники

declare @t table(dateen	datetime, timeen varchar(5))

insert @t values('2013-01-01', '13:11')
insert @t values('2014-01-01', '13:11')
insert @t values('2015-01-01', '13:11')

select * from (
select *,convert(datetime, convert(varchar(10), t0.DateEN, 127)+'T'+t0.TimeEN+':00.000', 127) AS dateen_timeen_cast_2 from @t t0
) t0
WHERE
(t0.dateen_timeen_cast_2 between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 
20 янв 14, 15:14    [15441260]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Glory
Ох цж эти криворукие сказочники

declare @t table(dateen	datetime, timeen varchar(5))

insert @t values('2013-01-01', '13:11')
insert @t values('2014-01-01', '13:11')
insert @t values('2015-01-01', '13:11')

select * from (
select *,convert(datetime, convert(varchar(10), t0.DateEN, 127)+'T'+t0.TimeEN+':00.000', 127) AS dateen_timeen_cast_2 from @t t0
) t0
WHERE
(t0.dateen_timeen_cast_2 between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 


Это наваждение - у меня не срабатывает такой запрос. нету записей.
20 янв 14, 15:40    [15441503]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
ELEKTpoHuK
Это наваждение - у меня не срабатывает такой запрос. нету записей.

А вы где его запускаете то ?
20 янв 14, 15:41    [15441519]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Glory
ELEKTpoHuK
Это наваждение - у меня не срабатывает такой запрос. нету записей.

А вы где его запускаете то ?


У меня нету доступа к серверу бд - я запускаю через PHP
Если ваш скрипт использую
(t0.dateen_timeen_cast_2 between '2014-01-01 00:00:00' and '2014-01-31 23:59:00')

- нету записей а если я там меняю
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00')

то опять же все благополучно срабатывает.
20 янв 14, 15:46    [15441565]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
ELEKTpoHuK
У меня нету доступа к серверу бд

Как можно тогда выполнять запросы, если нет доступа ?

ELEKTpoHuK
я запускаю через PHP

Т.е. команды, которые приходят серверу, вам неизвестны ?
20 янв 14, 15:50    [15441607]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Glory
ELEKTpoHuK
У меня нету доступа к серверу бд

Как можно тогда выполнять запросы, если нет доступа ?

ELEKTpoHuK
я запускаю через PHP

Т.е. команды, которые приходят серверу, вам неизвестны ?


Я может быть не правильно выразился. Я е могу работать напрямую с сервером БД.
Я могу через PHP, доступ конечно же есть.
Я делаю запрос таким образом
$zapros = mssql_query("
select * from (
select *,convert(datetime, convert(varchar(10), t0.dateen, 127)+'T'+t0.timeen+':00.000', 127) AS dateen_timeen_cast_2 from dbo.prop_ent t0
) t0
WHERE
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00') 
") or die('mssql_connect error3: '.mssql_get_last_message());	


И если есть ошибка она вылетает. Что значит не известны команды которые приходят серверу?
20 янв 14, 15:54    [15441643]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
ELEKTpoHuK
Я может быть не правильно выразился. Я е могу работать напрямую с сервером БД.

Вообще то ВСЕ(почти) в этом мире работают с mssql через какое-то приложение.

ELEKTpoHuK
Что значит не известны команды которые приходят серверу?

Это означает то, что вы не знаете, какие команды функция mssql_query отсылает серверу на выполнение.
20 янв 14, 15:57    [15441680]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
ELEKTpoHuK
Member

Откуда:
Сообщений: 56
Glory
ELEKTpoHuK
Я может быть не правильно выразился. Я е могу работать напрямую с сервером БД.

Вообще то ВСЕ(почти) в этом мире работают с mssql через какое-то приложение.

ELEKTpoHuK
Что значит не известны команды которые приходят серверу?

Это означает то, что вы не знаете, какие команды функция mssql_query отсылает серверу на выполнение.


То есть как не знаю - я же пишу эти команды.

$zapros = mssql_query("
select * from (
select *,convert(datetime, convert(varchar(10), t0.dateen, 127)+'T'+t0.timeen+':00.000', 127) AS dateen_timeen_cast_2 from dbo.prop_ent t0
) t0
WHERE
(t0.dateen between '2014-01-01 00:00:00' and '2014-01-31 23:59:00')
") or die('mssql_connect error3: '.mssql_get_last_message());

или это не про то?
Вот версия
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
20 янв 14, 16:16    [15441857]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
Glory
Member

Откуда:
Сообщений: 104760
Возьмите _другую_ утилиту. Желательно SQL Server Management studio

ELEKTpoHuK
То есть как не знаю - я же пишу эти команды.

это команды PHP
Вы разницу между клиентским и серверными кодом понимаете ?
20 янв 14, 16:27    [15441989]     Ответить | Цитировать Сообщить модератору
 Re: Select по дата+время из полей с типами DATE и CHAR  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
USE svh;
IF OBJECT_ID(N'dbo.____view_big_select','V') IS NULL
EXECUTE(N'CREATE VIEW dbo.____view_big_select AS SELECT 0 X;');
GO
ALTER VIEW dbo.____view_big_select AS
SELECT 
 NCAR, 
 dateen,
 CAST(CONVERT(CHAR(11),dateen,126)+timeen +':00'AS DATETIME) dateen_timeen_cast,
 NTIR
FROM svh.dbo.prop_ent;
GO

SELECT *
FROM dbo.____view_big_select
WHERE dateen_timeen_cast>='2014' and dateen_timeen_cast<'20140201';
И скажите, что это не работает.
Просто, небось, данных в этом периоде нет.
20 янв 14, 16:39    [15442101]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить