powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / О дате
47 сообщений из 47, показаны все 2 страниц
О дате
    #32037682
Сергей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос таков у меня 2 SQL 2000 сервера один дома другой на работе
и винды русские и английские (2000) соответственно
Мне нужно получить datetime на 00:00:00 текущего дня но из за различных форматов даты мои манипуляции cast c day,year,month и getdate() имеет разный формат, есть ли способ делать независимо от формата.
...
Рейтинг: 0 / 0
О дате
    #32037688
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не пойму в чем проблема - переменная типа datetime хранит информацию во внутреннем формате, который не зависит от языковых настроек. Последние влияют только на отображение. Так что, если Вам необходимо работать с переменными типа datetime, то используйте GetDate(), DateAdd() и т.п.
Если речь о строковых данных, то YEAR, MONTH, DAY помогут Вам.

Удачи
...
Рейтинг: 0 / 0
О дате
    #32037694
Сергей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все хорошо но как получить теми же add или dif из даты начало этого дня 00:00:00?
...
Рейтинг: 0 / 0
О дате
    #32037702
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понял, что если сейчас, скажем,
Код: plaintext
 2002 - 07 - 19   11 : 54 : 36 . 050 


То Вам необходимо получить
Код: plaintext
 2002 - 07 - 19   00 : 00 : 00 . 000 

в некой переменной типа datetime?
...
Рейтинг: 0 / 0
О дате
    #32037703
Сергей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да
...
Рейтинг: 0 / 0
О дате
    #32037704
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOL->Date and tIME fUNCTIONS->DATEPART()
...
Рейтинг: 0 / 0
О дате
    #32037707
Сергей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но как понять после в каком виде для сast подавать
yyyy-mm-dd или dd/mm/yyyy ?
...
Рейтинг: 0 / 0
О дате
    #32037708
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
declare @d datetime
set @d = getdate()
set @d = convert(char( 10 ),@d, 112 )
select @d
...
Рейтинг: 0 / 0
О дате
    #32037709
Сергей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое просто нечеловеческое СПАСИБО
...
Рейтинг: 0 / 0
О дате
    #32037719
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сергей2 если есть такого типа вопросы,то лутше пользуйся поиском по форуму(Лично я так и делаю т.к. ето FAQ:)
...
Рейтинг: 0 / 0
О дате
    #32037944
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно еще преобразовывать дату в число и отбрасывать дробную часть (в которой как раз содержатся часы-минуты-секунды)
Код: plaintext
select cast(floor(cast(GetDate() as float)) as datetime)
...
Рейтинг: 0 / 0
О дате
    #32037970
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dikobrazz

Datetime - не есть вещественное число

Код: plaintext
select convert(datetime, substring(convert(binary( 8 ), GetDate()), 1 ,  4 )+0x00000000)
...
Рейтинг: 0 / 0
О дате
    #32037980
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Datetime - храниться как float, т.е. целая часть - это год, месяц и день а дробная - часы, минуты ... . Отбрасывая дробную часть можно получить дату без времени (т.е 00:00:00.0).
...
Рейтинг: 0 / 0
О дате
    #32037984
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom

Обратите внимание - здесь обсуждается MS SQL Server.

Смею предположить, что MS SQL Server данные типа Datetime в формате Datetime MS SQL Server-а.

Если это так - то Вы либо не что-то упустили, либо попали не в тот форум.
...
Рейтинг: 0 / 0
О дате
    #32037985
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"не что-то" ;)
...
Рейтинг: 0 / 0
О дате
    #32037990
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
declare @dt datetime
select @dt = getdate()
select @dt = round(convert(float,@dt), 0 , 0 )
select @dt
...
Рейтинг: 0 / 0
О дате
    #32037992
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom
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
О дате
    #32037994
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фактически - те же .... вид сбоку
...
Рейтинг: 0 / 0
О дате
    #32038017
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю не стоит углубляться float / не float. В любой момент MS может поменять формат (а примеров таких полно) и придется все переделывать. в этом случае лучше воспользоваться функциями, тем более, что это не сложно.
...
Рейтинг: 0 / 0
О дате
    #32038020
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom
Два 4-х байтных целочисленных поля и float схожи друг с другом как и "теми же с боку"
...
Рейтинг: 0 / 0
О дате
    #32038023
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 СуКа
интересно, SQL автоматически вставляет функции конвертации в данном случае ?
Код: plaintext
1.
2.
3.
declare @dt datetime
select @dt = getdate()
select @dt = @dt +  1 
select @dt

добавляем 1 день
...
Рейтинг: 0 / 0
О дате
    #32038027
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2rOm

Нет, что ты !!!

Сервак сначала пытается обратиться с службу тех. поддержки (но только если не находит MSDN)
...
Рейтинг: 0 / 0
О дате
    #32038030
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а все же ?
не знаешь, так и скажи
...
Рейтинг: 0 / 0
О дате
    #32038038
3JIA9I CyKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он ничего не "вставляет", т.к. неплохо ориентируется в собственных типах данных.

Только проверка диапазона
...
Рейтинг: 0 / 0
О дате
    #32038039
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Rom

Не могли бы Вы расписать как перевести дробную часть возвращаемую при конвертиции DateTime во Float в стандартные чч:мм:сс.

С целой частью понятно - это количество дней от 01.01.1900 (я проверял, сходится), а вот дробную часть как не пытаюсь - не получается :(

Это не с целью подколоть. Мне действительно интересно.

2 3JIA9I CyKA

Вопрос тот же, но уже пользуясь переводом в Binary
...
Рейтинг: 0 / 0
О дате
    #32038040
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 СуКА
т.к. неплохо ориентируется в собственных типах данных
так как же он определяет, чего я хочу прибавить - 1 день или одну миллисекунду ?
...
Рейтинг: 0 / 0
О дате
    #32038043
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

Время соотв. 0x00000003 есть ровно 10 ms
0x00000009 --> 30 ms
и т.д.
...
Рейтинг: 0 / 0
О дате
    #32038044
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom

Он так запрограммирован.
Недеюсь, Вы понимаете , что я имею ввиду.
...
Рейтинг: 0 / 0
О дате
    #32038045
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom
Все что до запятой - это целые дни
все что после - часть от одних суток, т.е. 24 часов

select getdate() + 1.5
есть 1 сутки плюс еще 0.5 от 24 часов, т.е. 12 часов
...
Рейтинг: 0 / 0
О дате
    #32038046
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. получается, что при операциями с датами, SQL оперирует ими как с дробными числами ?
...
Рейтинг: 0 / 0
О дате
    #32038047
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это значит только то, что он может так делать
...
Рейтинг: 0 / 0
О дате
    #32038049
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оставим это на совести СуКИ, я точно не знаю, высказал предположение, может оно и не верное.
...
Рейтинг: 0 / 0
О дате
    #32038050
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да что вы спорите блин....
Код: plaintext
1.
use master
select * from dbo.spt_datatype_info

надеюсь все понятно....
...
Рейтинг: 0 / 0
О дате
    #32038053
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3JIA9I CyKA абсолютно прав.....
всем остальным.... посмотрите поля data_precision , numeric_scale и RADIX...
...
Рейтинг: 0 / 0
О дате
    #32038054
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да еще.... с флоат конечно удобно.... но... медленно это раз... и не ясно как будет работать в 64-разрядной системе на itanium.. это 2...
самый бысрый вариант с bynary...
...
Рейтинг: 0 / 0
О дате
    #32038056
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3JIA9I CyKA

Все-равно не понятно.

Например, есть время:
14:19:16.077= 51556077

Перевод во Float дает 0.596713850311

Перевод в Binary (последние 4 байта)

0х00EC0147= 15466823

Каким образом из 15466823 может получится 51556077

А, дошло:
15466823*10/3=51556077

Тогда остался только вопрос к Rom . А из типа Float как переводить?
...
Рейтинг: 0 / 0
О дате
    #32038057
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
щас придумаем
...
Рейтинг: 0 / 0
О дате
    #32038059
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решая влоб
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare @dt datetime, @fl float
select @dt = getdate()
select @fl = convert(float,@dt) - round(convert(float,@dt), 0 , 1 )
select @fl *  24   --  целая часть - это часы
 
select (@fl *  24  - round(@fl *  24 , 0 , 1 ) ) *  60   -- целая часть - это минуты
 
...
Рейтинг: 0 / 0
О дате
    #32038061
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rom
Да, действительно. Почему-то такой способ мне в голову не пришел. Спасибо, буду знать.
...
Рейтинг: 0 / 0
О дате
    #32038063
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom
А я так на Вас надеялся...

Ради такого случая могли бы продемонстрировать round от datetime (он есть float, не так ли?)
...
Рейтинг: 0 / 0
О дате
    #32038064
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот уж точно злая ....
...
Рейтинг: 0 / 0
О дате
    #32038066
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Rom
1) Согласен. 3JIA9I.
2) Read-Only Memory - это которая не поддерживает запись ?
...
Рейтинг: 0 / 0
О дате
    #32038069
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разница между ROM & Rom на твой взгляд имеется ?
...
Рейтинг: 0 / 0
О дате
    #32038070
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таклм случае следует признать, что разница между "3JIA9I" и "ЗЛАЯ" ничуть не меньше чем между "ОШФ9Ш" и "PKFZ"
...
Рейтинг: 0 / 0
О дате
    #32038071
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не следует, просто злая и все
...
Рейтинг: 0 / 0
О дате
    #32038072
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. 15:04
...
Рейтинг: 0 / 0
О дате
    #32048216
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dikobrazz
Ваш способ чуть быстрее
Код: plaintext
convert(datetime, substring(convert(binary( 8 ), rate_date),  1 ,  4 )+0x00000000)

, но медленнее
Код: plaintext
convert(datetime, convert(int, substring(convert(binary( 8 ), rate_date),  1 ,  4 )))
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / О дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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