Преобразовать дату sql в дату 1с

Обновлено: 04.07.2024

Команда INTERVAL позволяет прибавлять к дате и отнимать от нее определенные промежутки времени.

Синтаксис

После команды INTERVAL можно указывать определенную часть даты (день, месяц или год и тп), к примеру, так INTERVAL 1 DAY или INTERVAL 3 MONTH, или сразу несколько частей.

В этом случае значения даты берутся в кавычки, пример: давайте прибавим 1 год и 3 месяца - это будет выглядеть так: INTERVAL '1-3' YEAR_MONTH.

Мы указываем, что хотим год и месяц (вот так: YEAR_MONTH), и перед этим в кавычках пишем сначала значение для года, потом значение для месяца. Между ними ставим разделитель (он может быть абсолютно любым).

Смотрите список возможных комбинаций (разделители указаны для примера, они могут быть любыми):

Значение Ожидаемый формат
SECONDсекунды
MINUTEминуты
HOURчасы
DAYдни
MONTHмесяцы
YEARгода
MINUTE_SECOND"минуты:секунды"
HOUR_MINUTE"часы:минуты"
DAY_HOUR"дни часы"
YEAR_MONTH"года-месяцы"
HOUR_SECOND"часы:минуты:секунды"
DAY_MINUTE"дни часы:минуты"
DAY_SECOND"дни часы:минуты:секунды"

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
date
дата
1 Дима 2010-03-01 12:01:02
2 Петя 2011-04-02 13:02:03
3 Вася 2012-05-03 14:03:04

Пример

В данном примере к дате прибавляется 1 день:

SQL запрос выберет следующие строки:

id
айди
name
имя
date
дата
new_date
новая дата
1 Дима 2010-03-01 12:01:02 2010-03- 02 12:01:02
2 Петя 2011-04-02 13:02:03 2011-05- 03 13:02:03
3 Вася 2012-05-03 14:03:04 2012-06- 04 14:03:04

Пример

В данном примере от даты отнимается 1 день:

SQL запрос выберет следующие строки:

id
айди
name
имя
date
дата
new_date
новая дата
1 Дима 2010-03-01 12:01:02 2010- 02-28 12:01:02
2 Петя 2011-04-02 13:02:03 2011-05- 01 13:02:03
3 Вася 2012-05-03 14:03:04 2012-06- 02 14:03:04

Пример

В данном примере к дате прибавляется 1 год и 2 месяца:

SQL запрос выберет следующие строки:

id
айди
name
имя
date
дата
new_date
новая дата
1 Дима 2010-03-01 12:01:02 2011-05 -01 12:01:02
2 Петя 2011-04-02 13:02:03 2012-06 -02 13:02:03
3 Вася 2012-05-03 14:03:04 2013-07 -03 14:03:04

Разделитель в запросе не имеет значения. Он может быть любым символом:

Можно использовать даже несколько символов:

Можно использовать и пробел:

Пример

В данном примере к дате прибавляется 1 год, 2 месяца и 1 день:

SQL запрос выберет следующие строки:

id
айди
name
имя
date
дата
new_date
новая дата
1 Дима 2010-03-01 12:01:02 2011-05-02 12:01:02
2 Петя 2011-04-02 13:02:03 2012-06-03 13:02:03
3 Вася 2012-05-03 14:03:04 2013-07-04 14:03:04

Запрос можно переписать таким образом:

Пример

В данном примере к дате прибавляется 1 год, отнимаются 2 месяца и прибавляется 1 день:

Функция преобразование всяких вариантов строк в дату. Искал, но не нашел на сайте.
Преобразовывает СТРОКИ вида "01/10/13","01-10-2013","10,13","10.13","01.03.2013 0:00:00" к типу ДАТА
Может, кому пригодится.
В обработке используется стандартная функция разложить строку, указываю ее ниже.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Функция преобразование всяких вариантов строк в дату. Искал, но не нашел на сайте.
Преобразовывает СТРОКИ вида "01/10/13","01-10-2013","10,13","10.13","01.03.2013 0:00:00" к типу ДАТА
Может, кому пригодится.
В обработке используется стандартная функция разложить строку, указываю ее ниже.

неплохо, только можно было бы разделитель сделать параметром, и код бы упростился (1) dv2008, Я уже думал, но у меня с разных мест идет дата в разных форматах, поэтому чтоб не гадать, поставил все на проверку. (1),(2)
по поводу параметра-разделителя
а он нужен?
попробуйте такое:
Код
Показать полностью

попробуйте вместо минуса использовать другой символ, букву
попробуйте разные символы, напр., "012013"
будете приятно удивлены (3) tdr1225,
попробовал Ваш код, у меня выдает ошибку. что с фигурными скобками, что с минусом:
: Преобразование значения к типу Дата не может быть выполнено Побробуйте, передать строку 01.10/2013 или 01-10/2011. Ваша Функция не совершена. Спасибо. Очень пригодилась.
(6) Хочу сказать, что вся 1С далека от совершенства.
Согласна с (7) - Отдельное спасибо за открытость. Как правило, необходимость перевода строки в дату возникает при загрузке информации откуда-нибудь (например, из текстового файла, или Экселя). В таком случае, написать парсер для даты совсем несложно - потому что все строки одного вида. Таким образом, универсальность здесь оказывается не то чтобы лишней, но может заметно замедлить загрузку. Тем не менее, безусловно, полезная вещь. Отдельное спасибо за открытость

вот пример с меньшей функциональностью и с меньшим временем выполнения:

Функция ДатаИзСтроки10(стрДата) экспорт // "01.12.2011" преобразует в '01.12.2011 0:00:00'
Попытка
возврат Дата(Сред(стрДата,7,4)+Сред(стрДата,4,2)+Лев(стрДата,2))
Исключение
возврат '00010101'
КонецПопытки;
КонецФункции // ДатаИзСтроки10()

Amara; Alalexey; imbaZeratul; enoty200shtyk; rabota.v8.1c; shunk; Tash.B; user1356192; Happy_yahoo; NCHRobert; 1v7; elephant_x; ASV085; s0u1; Неопределено; nekit_rdx; DataReducer; simgo83; eugenek27; stroga; Irwin; PSKMOL; user721122; Hamma; dev_FISHER; paxanb; N2; rayastar; Jon2011; surr; codename-s; b00ker; wau8824ru; CatNotDog; Alex_IT; freeek; PhoenixAOD; Somebody1; Prog1CZUP31; SP2000; PokerFace; Brook; klinval; Doomino; angelochekss666; Gremlin; illUMI; Km91; Montecrizto; buganov; anig99; sanfoto; verad; TeploU; killovolt; + 55 – Ответить (8) Можно вместо "Сред(стрДата,7,4)" Использовать "Прав(стрДата, 4)". И тогда время выполнения уменьшится еще сильнее. Только что преогромно выручил. Преогромное же спасибо. Нет, вернее, СПАСИБО! Спасибо, интересная реализация, жаль время не учитывает. Большое спасибо! Очень нужная и полезная вещица! Пригодилась вовремя! Спасибо! Даже не пришлось думать, спасибо. Очень помогает постоянно. Понадобилось доработать функцию, т.к. требовалось разобрать дату с буржуйским форматом "mm/dd/yyyy".
Вот моя версия, с указанием формата даты:

upd:
Для годов больше 50 (94, например) плюсуется сдвиг 1900, иначе 2000

Вот спасибо!
а если в переданной строке заменить разделитель на некий стандартный (напр. "%"), тогда код можно сделать компактнее, т.е. только для стандартного разделителя. Может кому понадобится без длинных функций. так вот, как ни странно, но работает такая конструкция:
perepetulichka; Manticor; freeek; flyer; fvr2000; getnight; AndreykO; madfox; CeHbKA; + 9 – Ответить (27) kentavr27, при чём Дата("03.06.2014"); не сработает, вызовет исключение, а Дата("03.06.2014 00:00:00"); - сработает. Хотя это и странно, ведь в СП именно год на первом месте. а нет у кого варианта преобразовать из строки вида 06 ноября 2014 г.
а то ничего путного в голову не приходит: придется все имена месяцев перебирать ( (29) Vodoley, вот тут Минимализмы в примере под номером 13 есть нужное вам решение. На всякий случай приведу его здесь полностью Это универсальная функция - работает с любым форматом даты. В том числе с тем, где месяц написан прописью. Дни недели разве что словами нельзя (в данной реализации) называть.

(31) ildarovich, с любым форматом даты как раз-таки не работает )
Уж не спрашивайте меня о специфике, но в общем, я пытался сопротивляться. :)

Доработал предложенный Вами алгоритм для формата данных без даты (только время), пример формата: "ДФ=HH:mm:ss"

(33) DrBlack, мне самому решение задачи №13 не очень нравится. Я его привел "за компанию" с другими комментариями. Не для того, чтобы использовать в готовом виде, а для того, чтобы можно было извлечь приемы использования соответствия в этой задаче.

У меня не прокатило.
Вот так написал:

возвращает пустую дату.

Посмотрел код - там проблема в том, что я передаю название месяца в родительном падеже, а ваша функция рассчитана на именительный.

(31) Написал вот так:

Не особо универсально конечно, но работает ))

А мне подошел вот такой вариант:

ну, то есть сначала надо вырезать все разделители и получить непрерывный набор цифр:

Дата("20150822110645") равносильно 22.08.2015 11:06:45

Спасибо. Очень помогло. Всё работает, просто замечательно.

Делал себе функцию для даты из exel. функция не универсальная, для решения локальной задачи.

(37)Тема давно уже прошла, но все же. Воспользовался вашей функцией, спасибо, сэкономил несколько минут. В ней опечатка в слове "января" и некорректно распознаются числа, меньшие 10 т..к отсутствуют лидирующие нули.
Спасибо. Мне в обработку загрузки из excel вполне пришлось к месту В замечательном примере вот этот кусок не работает: Формат(Дата(1, ё, 1), "ДФ=MMММ")
Потому, что для пустой даты название месяца не вернет, у меня возвращает "" (пустую строку). В синтакс помощнике сказано, что должен возвращать строку "Пустая дата".
И даже если написать Дата(2,ё,1), тоже не подходит, т.к. название месяца идет в именительном падеже ("Январь"), а в формате "ДЛФ = DD" месяцы идут в родительном ("Января").
Но логика понятна, буду с утра разбираться. Сервак отрубился удаленный. В общем сделал так Сред(Формат(Дата(2019, ё, 10), "ДФ=ddMMMM"), 3) Для загрузки формата "26.07.2019" сделал просто:
Дата(ДатаСтрокой + " 00:00:00") Выложу и я свою "нетленку" :-)
функция разбирает любые корректные даты

Просмотры 90572

Загрузки 0

Рейтинг 123

Создание 29.09.11 16:52

Обновление 29.11.11 04:19

№ Публикации 92455

Тип файла Нет файла

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Не указано

ТОП самых продаваемых и популярных готовых решений

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020 4561 Eugen-S 23

СКД: 5 советов, как сделать лучше

Несколько примеров решения задач с использованием разных подходов

27.10.2021 4479 Neti 19

Что за ? в коде, или Секретный оператор в 1С

Инкремент, модуль и прочая магия, которая скрыта под символом "?"

21.10.2021 8371 SeiOkami 41

Полезные примеры СКД, ч.2

Еще несколько примеров решения задач в СКД.

06.04.2021 10876 Neti 8

27.01.2016 85840 Serginio 116

Обзор полезных методов БСП 3.1.4

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021 41424 rayastar 51

Звуковое управление в 1С 8.3

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021 7228 velemir 33

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020 8963 comol 31

Использование программных перечислений, ч.1: строковые константы Промо

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016 41158 unichkin 74

Базовые вещи БСП, которые облегчат жизнь программисту 1С

В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.

30.08.2020 20393 quazare 34

[Общий модуль] Динамическое формирование интерфейса

Версия 2.0.0.1 + добавил GitHub

28.08.2020 13073 rpgshnik 74

Форма выбора (подбор) в управляемых формах

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020 79487 user5300 19

Вспомогательные инструкции в коде 1С Промо

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018 36203 tormozit 106

Программная работа с настройками СКД

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020 66212 ids79 26

[СКД] Программное создание схемы компоновки данных

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020 43929 John_d 22

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

30.12.2019 35639 kuzyara 38

Оформление и рефакторинг сложных логических выражений Промо

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012 82911 tormozit 131

Сходство Джаро - Винклера. Нечеткое сравнение строк

В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.

25.12.2019 8466 brooho 19

22.11.2019 12435 Sibars 19

Полезные процедуры и функции для программиста

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019 39861 HostHost 41

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007 54515 tormozit 51

Таблица значений. Нюансы

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019 53340 Yashazz 56

[Шпаргалка] Программное создание элементов формы

Программное создание практически всех популярных элементов формы.

06.09.2019 103330 rpgshnik 75

Агрегатные функции СКД, о которых мало кто знает

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019 78174 ids79 56

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017 51286 tormozit 74

Регистры бухгалтерии. Общая информация

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019 46879 YPermitin 25

Три костыля. Сказ про фокусы в коде

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019 30254 YPermitin 81

Иерархия без "В ИЕРАРХИИ"

22.08.2019 15104 ildarovich 24

Выгрузка документа по условию Промо

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019 18048 m-rv 3

Отслеживание выполнения фонового задания

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019 45367 ids79 22

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019 153393 ids79 75

Фоновое выполнение кода в 1С - это просто

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019 61140 avalakh 27

Как прикрутить ГУИД к регистру сведений Промо

. и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019 23373 m-rv 18

Разбираемся с параметрами редактирования СКД

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019 42107 json 17

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019 106325 ids79 17

Обработчики событий при записи объектов. Зачем и что за чем?

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта. Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

В разделах этой статьи представлен обзор всех типов данных и функций даты и времени Transact-SQL.

Типы данных даты и времени

Типы данных даты и времени Transact-SQL перечислены в следующей таблице:

Тип данных Формат Диапазон Точность Объем памяти (в байтах) Определяемая пользователем точность в долях секунды Смещение часового пояса
time чч:мм:сс[.ннннннн] От 00:00:00.0000000 до 23:59:59.9999999 100 наносекунд от 3 до 5 Да Нет
date ГГГГ-ММ-ДД От 0001-01-01 до 31.12.99 1 день 3 Нет Нет
smalldatetime ГГГГ-ММ-ДД чч:мм:сс От 01.01.1900 до 06.06.2079 1 минута 4 нет Нет
datetime ГГГГ-ММ-ДД чч:мм:сс[.ннн] От 01.01.1753 до 31.12.9999 0,00333 секунды 8 Нет Нет
datetime2 ГГГГ-ММ-ДД чч:мм:сс[.ннннннн] От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 100 наносекунд От 6 до 8 Да Нет
datetimeoffset ГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:мм От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC) 100 наносекунд От 8 до 10 Да Да

Тип данных Transact-SQL rowversion не относится к типам данных даты и времени. Тип данных timestamp является устаревшим синонимом rowversion.

Функции даты и времени

В следующих таблицах приводятся функции даты и времени Transact-SQL. Дополнительные сведения о детерминизме см. в статье Детерминированные и недетерминированные функции.

Функции, возвращающие значения системной даты и времени

Transact-SQL наследует все значения системной даты и времени от операционной системы компьютера, на котором работает экземпляр SQL Server.

Высокоточные функции системной даты и времени

SQL Server 2019 (15.x) получает значения даты и времени с помощью функции GetSystemTimeAsFileTime() Windows API. Точность зависит от физического оборудования и версии Windows, в которой запущен экземпляр SQL Server. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс. Точность может быть определена с помощью метода GetSystemTimeAdjustment() API-интерфейса Windows.

Функция DATE_FORMAT преобразует дату из формата год-месяц-день или формата год-месяц-день часы:минуты:секунды в другой удобный нам формат.

К примеру, из год-месяц-день можно сделать день.месяц.год или месяц--год

См. также функцию TIME_FORMAT, которая меняет формат вывода времени.

Синтаксис

Команды

Можно использовать следующие команды, чтобы сделать нужный формат вывода:

Команда Описание
%d День месяца, число от 00 до 31.
%e День месяца, число от 0 до 31.
%m Месяц, число от 01 до 12.
%c Месяц, число от 1 до 12.
%Y Год, число, 4 цифры.
%y Год, число, 2 цифры.
%j День года, число от 001 до 366.
%H Час, число от 00 до 23.
%k Час, число от 0 до 23.
%h Час, число от 01 до 12.
%I Час, число от 01 до 12.
%l Час, число от 1 до 12.
%i Минуты, число от 00 до 59.
%S Секунды, число от 00 до 59.
%s Секунды, число от 00 до 59.
%w День недели (0 - воскресенье, 1 - понедельник).
%W Название дня недели по-английски.
%a Сокращенный день недели по-английски.
%M Название месяца по-английски.
%b Сокращенный месяц по-английски.
%D День месяца с английским суффиксом (1st, 2nd, 3rd и т.д.).
%r Время, 12-часовой формат (hh:mm:ss [AP]M).
%T Время, 24-часовой формат (hh:mm:ss).
%p AM или PM.
%U Неделя, где воскресенье считается первым днем недели, число от 00 до 53.
%u Неделя, где понедельник считается первым днем недели, число от 00 до 53.
%V Неделя, где воскресенье считается первым днем недели, число от 01 до 53.
Используется с `%X'.
%v Неделя, где понедельник считается первым днем недели, число от 01 до 53.
Используется с `%x'.
%X Год для недели, где воскресенье считается первым днем недели, число, 4 цифры.
Используется с '%V'.
%x Год для недели, где воскресенье считается первым днем недели, число, 4 разряда.
Используется с '%v'.
%% Символ `%'.

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
date
дата регистрации
1 Дима 2010-03-01 12:01:02
2 Петя 2011-04-02 13:02:03
3 Вася 2012-05-03 14:03:04

Пример

В данном примере при выборке создается новое поле, в котором будет лежать дата в другом формате:

Читайте также: