2015-03-05 2 views
-1

Я подключил Stata через ODBC к базе данных SQL.Stata read date variable from MS SQL

Моя проблема заключается в том, что Stata считывает переменные даты как строки. В SQL они имеют формат даты.

Как импортировать переменную даты в SQL в качестве даты в Stata?

+0

Вы можете импортировать даты как числовые в Stata в любой форме. Очень простой пример - годы. Возможно, вам понадобится конвертировать в Stata, но проблема, которую вы поднимаете, по-видимому, является частью понимания. Более того, нам нужны конкретные примеры, код, который вы пробовали, и т. Д. Например, я знаю много о датах в Stata и забыл о том, что я когда-либо знал о SQL, поэтому для доступа к таким людям, как я, вам нужно четко указать, как работает SQL типа дат, которые вас интересуют. –

+0

Я просто прочитал таблицу с помощью 'odbc load, table (" data_table ")' В SQL formate - только дата. Моя главная проблема: я прочитал до 2 миллиардов строк в Stata. Я хочу сохранить дополнительное время, чтобы преобразовать все строки в даты. Stata показывает дату как '% 10s' – user3614882

+0

Как я уже сказал, я вообще не знаю SQL, поэтому SQL ничего не значит для меня, хотя, что более важно, это может помочь другим. Кроме того, ваш вопрос заключался в том, как импортировать даты в Stata, но вы также дали понять, что можете это сделать. Я думаю, вы обнаружите, что преобразование даты в Stata не потеряет время, которое можно получить в другом месте. Вы импортируете ежедневные даты, даты и время или что-то еще? –

ответ

2

мы не можем ответить на этот вопрос, не зная формат вашей даты.

У меня была аналогичная проблема. Если я предполагаю, что ваша дата в

yyyy-mm-dd 

формат, то вам нужен этот код (при условии, что v1 является переменной, которая содержит ваши даты в Stata)

generate v2 = date(v1, "YMD") 
format %td v2 

Путь, который помог мне понять формат использовать, чтобы напечатать некоторые даты в Stata, чтобы увидеть, что они выглядят как во внутренней кодировке STATA в: Например:

display date("2013-08-14", "YMD") 
display %td date("2013-08-14", "YMD") 

Теперь, если вы хотите, чтобы преобразовать данные в формат Stata, потому что вы получаете несоответствие типа r (109); ошибки в Stata, выполните следующие строки кода, чтобы получить данные в правильном формате даты Stata:

. gen str new = string(value, "%10.0g") 
    . gen long date = date(new, "YMD") 
    . format date %td 
    . drop new 
+0

Функция 'date()' Stata лучше понятна, если (из Stata 13 on) вы используете документированный синоним 'daily()'. Он дает числовые ** суточные ** даты (и ** только ** числовые суточные даты). Обратите внимание, что 'daily (string (value,"% 10.0g ")," YMD ")' должно работать нормально, пока 'value' содержит числа, подобные 20130814. Устройство новой переменной, сгенерированное и затем отброшенное, возможно, будет яснее, но не является существенным. –

+0

Интересный Ник. Я не знал о функции daily() в Stata. Я это проверю. благодаря – adrCoder