#sql
#sql
Вопрос:
Я только сейчас начал работать с SQL; мне нужно представить некоторую информацию в некоторых таблицах, двумя из которых являются дата и время. Я хочу знать, существует ли лучший тип данных для представления даты и времени, чем varchar() или numeric(). Существуют ли какие-либо примитивы SQL для представления даты и времени?
Комментарии:
1. Какой диалект SQL при этом отличается?
Ответ №1:
Да, для большинства реализаций баз данных SQL существуют типы данных, специфичные для даты и времени.
Точный синтаксис зависит от поставщика RDMS, но вот несколько примеров для очень популярных Microsoft SQL Server и Oracle (ранее Sun) MySQL.
MySQL поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:
- Формат даты ГГГГ-ММ-ДД
- ДАТА-время — формат: ГГГГ-ММ-ДД ЧЧ: ММ: СС
- ВРЕМЕННАЯ МЕТКА — формат: ГГГГ-ММ-ДД ЧЧ: ММ: СС
- ГОД — формат ГГГГ или YY
SQL Server поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:
- Формат даты ГГГГ-ММ-ДД
- ДАТА-время — формат: ГГГГ-ММ-ДД ЧЧ: ММ: СС
- SMALLDATETIME — формат: ГГГГ-ММ-ДД ЧЧ: ММ: СС
- Формат временной МЕТКИ: уникальное число
Или вы можете выполнить поиск в других реализациях базы данных. Пример:
«Oracle тип данных даты и времени sql»
Вы могли бы найти:
Комментарии:
1. MySQL также имеет
TIME
тип данных: dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html2. В SQL-Server 2008 также есть некоторые дополнительные типы данных, но в нем нет
timestamp
: msdn.microsoft.com/en-us/library/ms187752.aspx3. Если вы не имеете в виду
datetimeoffset
: msdn.microsoft.com/en-us/library/bb630289.aspx4. То, что было вызвано
timestamp
в SQL-Server 2005, на самом деле было не временной меткой, а уникальным двоичным числом: msdn.microsoft.com/en-us/library/ms182776(v=SQL.90).aspx Теперь он вызываетсяrowversion
, и на этой странице вы можете прочитать: «Синтаксис временных меток устарел. Эта функция будет удалена в будущей версии Microsoft SQL Server.»
Ответ №2:
Это зависит от того, с каким вариантом вы работаете, но большинство вариантов SQL предлагают date, smalldate, datetime, datetimeoffset и т.д.
На самом деле это зависит только от того, как вы хотите отобразить дату и какой объем информации вы хотели бы отобразить.
Наиболее распространенной формой является datetime, и она объясняется (наряду со всеми другими) в MSDN Transact-SQL
Комментарии:
1. Спасибо phoenix, я собираюсь попробовать протестировать это с помощью datetime, чтобы посмотреть, как это работает.