У меня есть данные в формате "2009-07-17T00: 00: 00-05: 00" в переменной varchar. Как я могу преобразовать эти данные в поле datetime в MS SQL-сервере, используя запрос или TSQL?SQL datetime value
ответ
Если вы на SQL Server 2008, вы можете использовать тип datetimeoffset
:
select cast('2009-07-17T00:00:00-05:00' as datetimeoffset)
Так как вы на 2005 datetimeoffset
тип данных не доступен для вас. Вы должны решить, хотите ли вы отдельно хранить информацию о часовом поясе. Если вы просто хотите datetime
части, просто раздеть часть часового пояса из строки и брось как datetime
:
select cast(left('2009-07-17T00:00:00-5:00', 19) as datetime)
как-то не работает. показывает: «Тип datetimeoffset не является определенным типом системы». Что мне делать? – THEn
Какую версию SQL Server вы используете? 'datetimeoffset' является новым в 2008 году. –
Microsoft SQL Server 2005 - 9.00.1406.00 (X64) 3 марта 2007 г. 19:53:24 Авторское право (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-разрядная версия) в Windows NT 5.2 (Build 3790: Service Pack 2) – THEn
В ролях, как DATETIME не будут работать, но этот формат является допустимым форматом XML даты и времени, так вы можете маршрутизировать литье через XML-тип:
declare @d varchar(50);
select @d = '2009-07-17T00:00:00-05:00';
select x.value(N'.', N'datetime') from (select cast(@d as xml) as x) as t;
да. эти данные взяты из файла XML. Я использовал SELECT [StartDate] FROM OPENXML (@iTree, '/ List/DailyUpdate', 2) WITH ([STARTDATE] varchar (50)) любым способом сделать это в SQL? Я пытался использовать datetime, если он не работает ... – THEn
Можете ли вы использовать XML-методы вместо OPENXML? OPENXML - это динозавр ... Просто скажите 'SELECT xmlfield.value (N '(/ List/Daily/Update) [1]', N'datetime ') FROM table'. С OPENXML вам нужно использовать синтаксис WITH, чтобы указать схему возврата и карту StartDate для datetime: 'SELECT StartDate FROM OPENXML (...) WITH (StartDate DATETIME)'. –
Также в ответе в ответе отображается «Ошибка конверсии при преобразовании даты и времени из символьной строки». Есть идеи ? – THEn
- 1. DateTime "null" value
- 2. EntityValidationErrors inserting null datetime value
- 3. Табличные адаптеры datetime null value
- 4. truncate inccorrect datetime value 30.05.2012
- 5. Informix SQL Compare DateTime value on Where Statement
- 6. sql server «value» равен «value»
- 7. Вставить DateTime в SQL DateTime
- 8. PL/SQL coalesce on value value
- 9. лучшее решение для Null DateTime value
- 10. datetime picker, set value Сегодня, используя jquery
- 11. SQL select MAX value from last day
- 12. SQL - последний DateTime
- 13. Postgres sql return value
- 14. SQL Grouping/Contract Value
- 15. SQL replace value wildcard
- 16. SQL DEFAULT VALUE
- 17. sql rounding value
- 18. sql top N value
- 19. C# DateTime to SQL DateTime loss precision
- 20. SQL Query DateTime alignment
- 21. Round DateTime с использованием правил SQL DATETIME
- 22. Неузнаваемое значение Datetime SQL
- 23. SQL Server DateTime Intervals
- 24. SQL-код внутри SQL Scalar-value function - хотите обобщить - оптимизировать
- 25. SQL Server DateTime и SQL
- 26. Параметр Datetime для SQL-запросов
- 27. Совместим ли VB.Net DateTime с SQL DateTime?
- 28. Преобразование XML Datetime в SQL Datetime
- 29. Выбор SQL DateTime с переменной C# DateTime
- 30. Сравнение datetime SQL с текущим datetime
что это последний '-05: 00'? какой-то миллисекунды? – dotjoe
dotjoe: Это часовой пояс. –
- все поля 'like '% -05: 00''? Вероятно, придется преобразовать в обычный datetime с помощью строковых функций. – dotjoe