Oracle в SQL сервер Конвертация даты - PullRequest
1 голос
/ 27 января 2012

Я хотел бы преобразовать запрос Oracle SQL в запрос сервера SQL. Но я столкнулся с проблемой со следующей строкой:

AND to_date (to_char (M_DATE, 'DD-MM-YYYY')) = '27 / 01/12 '

M_DATE: DATE NOT NULL

Я использую

to_char (ДАТА, 'DD-MM-YYYY')

для того, чтобы получить такие данные: ДД-ММ-ГГГГ 00: 00: 00.000 (данные хранятся как: 25.02.12 15: 32: 06.578)

Так что я искал в интернете, но не нашел ни одного доступного решения. Но я не опытный пользователь SQL, поэтому, если кто-нибудь знает решение ..

Спасибо

Ответы [ 4 ]

3 голосов
/ 27 января 2012

Обычно при удалении любых значений времени из даты я использовал бы функции Date вместо преобразования в строку

 DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))

вместо

CONVERT(VARCHAR, GETDATE(), 103)

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

1 голос
/ 27 января 2012

В Oracle я бы удалил элемент времени даты и времени, используя trunc - например, так:

AND trunc(M_DATE) = ...

В SQLServer я бы преобразовал в дату - примерно так:

AND convert(date,M_DATE) = ...
0 голосов
/ 27 января 2012

Вы могли бы просто сделать:

AND convert(varchar(8), M_DATE, 3) = '27/01/12'

Конечно, это не сработает, если у вас есть даты из других веков.

Я не уверен, что вы подразумеваете под "данные хранятся как"; Помните, что Microsoft SQL Server DATE тип имеет точность только один день . Если вы хотите иметь время и день, вы должны использовать DATETIME2 type

0 голосов
/ 27 января 2012
SELECT CONVERT(VARCHAR(25), GETDATE(), 131)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...