Преобразование SQL из Oracle в Microsoft SQL Server (current_date, 'DD') с преобразованием в усечение (current_date, 'DD') - PullRequest
0 голосов
/ 25 сентября 2019

Я конвертирую из SQL Oracle в Microsoft SQL Server

>= trunc(current_date, 'DD'), конвертирую в >= CONVERT(DATE, GETDATE())

Но это не даетмне тот же результат.

Мой вопрос: как выглядит trunc(current_date, 'DD') (В каком формате?)?Я не могу проверить это, поскольку старая база данных была удалена.

Должно ли преобразование быть convert(varchar, getdate(), 105) вместо?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2019

Trunc в oracle всегда будет возвращать date в качестве вывода.

Trunc на DD будет усекать часть времени и давать дату выступления, а не ближайшую дату.

Так что учтите, что your_date: 24 сентября 2019 г., 17:30.

Select trunc(your_date, 'DD') from dual

даст следующий результат

24-sep-2019 
-- see time portion is truncated 
-- and return type is also date

Теперь вы можете соответствующим образом преобразовать этот запрос вmssql.

Ура !!

0 голосов
/ 25 сентября 2019

В Sql Server для следующего запроса вы получаете выходное значение как '25 Sep 2019'

select convert(varchar, getdate(), 106)

В Oracle, чтобы получить тот же вывод даты, что и '25 Sep 2019', вы можете использовать следующий запрос.

SELECT
TO_CHAR(
    TRUNC(TO_DATE( '25 Sep 2019 15:35:32', 'DD Mon yyyy HH24:MI:SS' )),'DD Mon yyyy')
FROM
  dual; 
0 голосов
/ 25 сентября 2019

, если вы собираетесь сохранить это как тип string в mssql, это ближайший формат даты и времени, о котором я могу подумать.

SELECT CONVERT(VARCHAR(50),DATEADD(day, DATEDIFF(day, '19000101', GETDATE()), '19000101'), 126) + 'Z'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...