SQL-запрос изменяет два первых числа с «2048» на «1948» - PullRequest
0 голосов
/ 03 июля 2018

У меня есть дата, которая выглядит в БД "2048-05-21"

Я хочу получить только год, а в том году я хочу получить только два задних номера и изменить два первых числа на 19

пример:

данные: 2048-05-21

1-й результат: 2048

2-й результат: 48

3-й результат: 1948

4-й результат: 1948-05-21

может ли SQL это сделать?

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Привет ниже SQL-запросы на основе вашего запроса

объявляет @date date - освобождает переменную даты set @ date = '2048-05-21' - инициализация даты

- Первый результат выберите год (@date)

- Второй результат выберите подстрока (Convert (varchar, year (@date)), 3,2)

- Третий результат выберите год (@date) -100

- Четвертый результат выберите DATEFROMPARTS (год (@date) -100, месяц (@date), день (@date))

0 голосов
/ 03 июля 2018
DECLARE @date DATE ='2048-05-21'

SELECT CAST(CAST(year(@date)-100 AS VARCHAR) + SUBSTRING(CAST(@date AS VARCHAR),5,6) AS DATE)
0 голосов
/ 03 июля 2018
  1. первый результат year функция.
  2. второй результат year функция с SUBSTR функцией.
  3. третий результат DATE_ADD минус 100 лет, затем используйте функцию year.
  4. четвертый результат DATE_ADD минус 100 лет

Вы можете попробовать это.

SELECT year(col),
       SUBSTR(year(col), 3, 2),
       year(DATE_ADD(col,INTERVAL -100 YEAR)),
       DATE_ADD(col,INTERVAL -100 YEAR)
FROM T

sqlfiddle: http://sqlfiddle.com/#!9/f3dd6f/8

Результат

|    1 |  2 |    3 |          4 |
|------|----|------|------------|
| 2048 | 48 | 1948 | 1948-05-21 |
0 голосов
/ 03 июля 2018

Является select year(your_column)-100 from your_table достаточные полномочия? Я предполагаю, что ваша «дата» имеет тип столбца date или datetime. В противном случае вы должны использовать подстроку (https://www.w3schools.com/sql/func_mysql_substring.asp)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...