Я помогаю коллегу с экспортом данных из SQL Server 2012. Я печатаю ручные запросы, а затем копирую/вставляю результаты в лист Excel, который я затем передаю с ним. Экстракт, который я делаю, будет файлом excel, который будет проанализирован вручную. Нет необходимости в автоматизации.CONVERT vs CAST при экспорте даты и времени в качестве дат с сервера sql
То, что я пытаюсь сделать, - это урегулирование наилучшей практики при экспорте статистики заказа, сгруппированной по дням, с целью лучшего изучения SQL. У меня есть поле типа datetime
, и я хочу преобразовать его в какой-то формат даты. В моем языке типичный формат даты - YYYY-MM-DD
. Иногда я могу поделиться своим скриптом с другими, у которого может быть другой язык. Я нашел три утверждения, которые, похоже, дают мне одинаковые значения.
select top 1
createdat
, CAST(createdat as date) as A
, CONVERT(char(10), createdat,126) as B
, CONVERT(char(10), createdat,127) as C
from dbo.[Order]
приводит к
createdat |A |B |C
2012-12-27 08:23:32.397 |2012-12-27 |2012-12-27 |2012-12-27
Из ссылки TSQL MSDN (link) Я понимаю, что:
- А обрабатывается SQL как тип Дата, тогда как В и С являются символы.
- B и C должны отличаться в зависимости от их часовой поясности.
Но я не понимаю:
- Как работает B и C ручки часовых поясов?
- Какова практическая разница при копировании/вставке в Excel?
- Есть ли практическая разница, если я разделяю этот сценарий с коллегами, используя другой язык, который я должен рассмотреть?
- Должен ли тот или иной быть предпочтительным?
А является лучшим вариантом. [Тип данных 'Date' не имеет формата отображения] (http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028), отображаются только строки, представляющие даты форматы. поэтому вам будет проще просто использовать 'cast (datetime as date)'. Однако я не уверен, как Excel будет обрабатывать даты. –
Мое личное мнение, понимание формата даты в формате Excel немыслимо. Лучше написать SQL в excel для импорта данных с SQL Server. Добавляя больше, copy-paste не всегда работает правильно в этом случае ... – Aditya