изменить только часть даты записи SQL - PullRequest
1 голос
/ 28 марта 2019

Использование SQL (Azure Sql) У меня есть ряд записей, которые содержат значения даты и времени, такие как: 16.03.19 9:25 16.03.19 10:15

Мне нужно, чтобы все они были сегодняшней датой, но сохранили их временную часть.

Я программист на C #, поэтому мой SQL немного ржавый.

Таким образом, псевдокод будет выглядеть примерно так (при условии, что требуемая_добавка_дата - это поле, которое мне нужно обновить.

обновить набор запрошенных_девери_дата = запрашиваемой_девери_даты.даты (7 дней)

так что все, что после этого было датировано 20.03.19 9:30 утра, теперь будет 27.03.199 9:30 утра

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Это выглядит как простой оператор UPDATE, который обновляет все строки YourTable.

UPDATE YourTable
SET requested_delivery_date = 
    DATEADD(DAY, DATEDIFF(DAY, requested_delivery_date, GETDATE()), requested_delivery_date)
;

Если вы хотите добавить постоянное количество дней, тогда запрос еще проще:

UPDATE YourTable
SET requested_delivery_date = 
    DATEADD(DAY, 7, requested_delivery_date)
;
1 голос
/ 28 марта 2019

Используйте комбинацию DateAdd и DateDiff:

DECLARE @Date As datetime = '2019-03-01T15:32:44'

SELECT  @Date As Source,
        GETDATE() As Today,
        DATEADD(DAY, DATEDIFF(DAY, @Date, GETDATE()), @Date) As Result

Результат:

Source                  Today                   Result
2019-03-01 15:32:44     2019-03-28 08:27:29     2019-03-28 15:32:44

Чтобы обновить столбец в таблице, вам просто нужно написать оператор обновления:

update TableName
set requested_delivery_date = DATEADD(DAY, DATEDIFF(DAY, requested_delivery_date , GETDATE()), requested_delivery_date)
-- add a where clause to only update some of the records
0 голосов
/ 28 марта 2019

Я попробовал это и успешно.Это моя таблица.

startTime   endTime
2019-03-28 15:55:10.690 2019-01-01 09:00:00.000

Мой оператор SQL:

UPDATE [MyDatabase].[dbo].[deom1] SET [endTime]=DATEADD(DAY, DATEDIFF(DAY, [endTime], GETDATE()), [endTime])

И вот результат:

startTime   endTime
2019-03-28 15:55:10.690 2019-03-28 09:00:00.000

Подробнее см. DATEADD (Transact-SQL) .

Надеюсь, это поможет.

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