#sql-server #sql-server-2008
#sql-сервер #sql-server-2008
Вопрос:
Используя ASP classic, я хочу преобразовать дату Tue, 21 Apr 2020 12:23:00 GMT
в формат AAAA-MM-DD HH:MM:SS
, чтобы вставить ее в базу данных SQL Server 2008.
Мой код:
CONVERT('Tue, 21 Apr 2020 12:23:00 GMT', GETDATE(), 20)
Я получаю эту ошибку:
Неправильный синтаксис для ‘Вт, 21 апр 2020 12:23:00 по ГРИНВИЧУ’.
Комментарии:
1. Просто в качестве примечания: SQL Server 2008 и 2008 R2 уже не имеют расширенной поддержки — red-gate.com/simple-talk/sql/database-administration/… — время для обновления!
Ответ №1:
Обратите внимание, что даты в SQL Server фактически не имеют никакого внутреннего строкового формата. Скорее, они хранятся как двоичные. Одним из вариантов здесь было бы взять следующую подстроку вашей входной метки времени, а затем использовать TRY_CONVERT
для преобразования ее в подлинное datetime внутри SQL Server:
Tue, 21 Apr 2020 12:23:00 GMT <-- start with this input
21 Apr 2020 12:23:00 <-- convert this string to datetime
Пример кода:
WITH yourTable AS (
SELECT 'Tue, 21 Apr 2020 12:23:00 GMT' AS dt
)
SELECT
dt,
TRY_CONVERT(datetime, SUBSTRING(dt, 6, LEN(dt) - 9)) AS dt_out
FROM yourTable;
ДЕМОНСТРАЦИЯ
Редактировать:
Если вы используете более раннюю версию SQL Server, то вы можете использовать CONVERT
с маской формата 106, используя ту же подстроку, что и выше:
SELECT
dt,
CONVERT(datetime, SUBSTRING(dt, 6, LEN(dt) - 9), 106) AS dt_out
FROM yourTable;
Комментарии:
1. Я использую sql server 2008, я не могу использовать TRY_CONVERT с совместимостью ниже 110
2. @user_1330 Затем используйте
CONVERT
с маской формата106
, см. мой обновленный ответ.3. использование вставки непосредственно с sql server работает очень хорошо, но использование asp classic не работает, у вас есть идея, пожалуйста? Ошибка: не удается преобразовать дату и / или время из строки.
4. Мне нужно было бы увидеть ваш ASP-код (и я не очень хорошо его знаю). Предполагая, что приведенный выше запрос устраняет вашу непосредственную проблему с SQL Server, вы можете захотеть открыть новый вопрос для проблемы ASP.