TGViewer
Java Mentor Java Mentor @your_java_mentor · 289 subscribers
Post #255 356
Задача которая меня вымотала

Дисклеймер:
Писал с телефона в состоянии индифферентности к форматированию

На работе меня передали в аренду в другую команду для реализации интеграции со сторонней системой.

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

Первый камень о который я споткнулся называется Microsoft SQL Server. Это именно та база из которой нужно было забирать данные.

А второй камень - это r2dbc. У нас на проекте стоит Kotlin и WebFlux, реактивный стек. А r2dbc - это реактивный драйвер для баз данных.

Ну так вот, нужно мне фильтрануть данные в исходной табличке по дате.
В базе стоит тип smalldatetime. В документации майкрософта написано, что для Java smalldatetime парсится в java.sql.Timestamp.

Но r2dbc не поддерживает java.sql.Timestamp, он поддерживает LocalDateTime. Но при передачи значения фильтра в виде LocalDateTime ругается уже MS SQL.

Ну не хотят дружить, со всеми бывает. Решил передать значение фильтра по дате тупо как строку и распарсить в самом запросе.

Что-то типа такого:

‘’’
Select *
From table
Where date > CAST(‘2024-07-14 10:00:00’ as smalldatetime)
‘’’

И вроде заработало… А вроде и нет. Часть дат парсится нормально, а часть падает с ошибкой.

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

А что если все даты отображаются в базе в формате YYYY-MM-DD, но парсить их надо в формате YYYY-DD-MM?

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

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

Ставь 🔥, если интересно почитать через что я прошел, чтобы запилить MR на 2.7К строк, и расскажу почему я не люблю r2dbc и как я в очередной раз убедился что от соприкосновения со всем, где в названии есть слово Microsoft все таки укачивает.
  • 🔥 27
  • ❤ 2
  • 👍 1
  • 😁 1
More from @your_java_mentor
  1. Sep 2, 2026photo post
  2. Sep 2, 2026video post
  3. Sep 1, 2026Post #394
  4. Sep 1, 2026Post #393
  5. Aug 28, 2026Как по вашему, что не так с этим кодом? ❌ В методе main в список добавляются магические ко…
  6. Aug 19, 2026UserService + UserServiceImpl — но Impl тут единственный. Как вы считаете: стоит ли заводи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →