|
Нужна функция "ближайший год"
|
|||
---|---|---|---|
#18+
В строках есть дата-время вида Sep 22 13:14:06 Без года. Время может убегать/отставать вплоть до нескольких суток, раньше оно игнорировалось, но теперь с ним тоже надо работать, для статистики. Кроме того, есть хорошая дата-время из источника с надежной синхронизацией, когда эта строка была получена. Хотелось бы конвертить эти строки в дату-время так, чтобы в районе 1 января не было косяков. То есть, если есть пары записей2023-12-31 23:50:40.000 | Jan 1 00:01:02
2024-01-01 01:02:00.001 | Dec 31 23:59:00 То в первом случае надо получить2024 Jan 1 00:01:02 Во втором -2023 Dec 31 23:59:00 Как бы сделать покрасивше и побыстрее? Строк много.... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2023, 11:09 |
|
Нужна функция "ближайший год"
|
|||
---|---|---|---|
#18+
Ну как-то так. Хотя надо решить что делать, если разница в секундах будет одинаковая. От outer apply можно избавиться, но тогда длинные выражения будут в условии с кучей скобок, не красиво. Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Изменено: 27.10.2023, 11:52 - Неуловимый Джо
Нравится:
Не нравится:
|
|||
27.10.2023, 11:49 |
|
Нужна функция "ближайший год"
|
||||||
---|---|---|---|---|---|---|
#18+
Что-то не то получилось.
Jan 1 00:01:02 Про дату-время в этой строке мы знаем, что она неточная, но не месяцы. Максимум - пара дней. Кроме того, у нас есть дата-время, когда мы эту строку получили:2023-12-31 23:50:40.000 Нам надо добавить к исходной строке год, чтобы потом конвертнуть ее в дата-время и дальше с ней работать как с датой. Очевидно, что время на глупом устройстве убежало, и нам нужно добавить 2024 год, чтобы получилось вот так:2024 Jan 1 00:01:02 ... |
||||||
:
Нравится:
Не нравится:
|
||||||
27.10.2023, 13:11 |
|
Нужна функция "ближайший год"
|
||||||
---|---|---|---|---|---|---|
#18+
А если в коде поменять знак больше на меньше, то получается так
2023-12-31 23:50:40.000 | Jan 1 00:01:02
2024-01-01 01:02:00.001 | Dec 31 23:59:00 то мы в обоих случаях добавим 2024, в то время как во второй строке нам надо добавлять 2023.... |
||||||
:
Изменено: 27.10.2023, 13:20 - Протобуранец
Нравится:
Не нравится:
|
||||||
27.10.2023, 13:19 |
|
Нужна функция "ближайший год"
|
|||
---|---|---|---|
#18+
Получается, мы должны сделать три конвертации строка - дата-время Jan 1 00:01:02 2022 Jan 1 00:01:02
2023 Jan 1 00:01:02
2024 Jan 1 00:01:02 И посмотреть, что из них ближе всего к времени, когда мы получили эту строку. Дороговато получается.... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2023, 13:23 |
|
Нужна функция "ближайший год"
|
|||
---|---|---|---|
#18+
Заготовка для функции. Но мне этот подход не нравится. Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2023, 14:12 |
|
|
Start [/forum/topic.php?fid=46&msg=40138185&tid=2186866]: |
0ms |
get settings: |
30ms |
get forum list: |
10ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
72ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
550ms |
get tp. blocked users: |
2ms |
others: | 200ms |
total: | 891ms |
0 / 0 |