7.7 Преобразование даты в формат sql datetime

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем punkyklan, 26 июл 2013.

  1. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, я пытаюсь записать поле с с форматом даты из 1С в поле с форматом даты sql datetime, там необходимо преобразование, это понятно, при вставке поля в sql как присвоить данному полю формат даты, делаю так:

    Код:
    //Преобразование
    Если (датамесяц(датапр)<10) тогда 
    месяцпр=строка("0"+строка((датамесяц(датапр))));
    иначе
    месяцпр=строка((датамесяц(датапр)));
    Конецесли;
    Если (датачисло(датапр)<10) тогда 
    деньпр=строка("0"+строка((датачисло(датапр))));
    иначе
    деньпр=строка((датачисло(датапр)));
    Конецесли;
    преобрдатапр=строка(строка(датагод(датапр))+"-"+строка(месяцпр)+"-"+строка(деньпр)+" "+"00"+":"+"00"+":"+"00");
    //Получается что преобразованная дата равна: 2004-01-01 00:00:00	  
    //Вставляю строчку в sql 
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(date('"+преобрдатапр+"')");
    выдает ошибку Syntax error converting datetime from character string

    Как сделать данное действие правильно
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    используйте функцию DATETIMEFROMPARTS - проще будет
  3. Herby
    Offline

    Herby Опытный в 1С

    Регистрация:
    21 фев 2013
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    в SQL используйте метод CONVERT(DateTime, 'ВашаДата',112)

    ВашаДата должна быть в формате "20130701" , например ВашаДата = Формат(ПолучитьДатуТА(),"ДГГГГММДД")
  4. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Код:
    преобрдатапр=формат(датапр,"ГГГГММДД");
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(CONVERT(DateTime,'преобрдатапр',112");
    // выдает ошибку Syntax error converting datetime from character string
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(|DATETIMEFROMPARTS('"+датагод(датапр)+","+датамесяц(датапр)+","+датачисло(датапр)+","+"23"+","+"59"+","+"59"+","+"0"+"')");
    // выдает ошибку  'DATETIMEFROMPARTS' is not a recognized function name.
    что не так?
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(CONVERT(DateTime,'"+Формат(датапр,"ДГГГГММДД")+"',112");
  6. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    У вас пропущены некоторые скобки и кавычки
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(CONVERT(DateTime,'"+Формат(датапр,"ДГГГГММДД")+"',112");
    Incorrect syntax near '112'

    Вот так работает:
    Код:
    Соединение.Execute("INSERT INTO Pers_sotr1 (DATA_PRIEM) values(CONVERT(DateTime,'"+Формат(датапр,"ДГГГГММДД")+"',112))");
    Спасибо
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да нет... Не пропущены. Это на экране так выглядит. Если бы вы сделали Ctrl-C Ctrl-V увидели бы))))

    Не за что
Похожие темы
  1. ILDARIAN
    Ответов:
    13
    Просмотров:
    1.134
Загрузка...

Поделиться этой страницей