Как преобразовать datetime в строку в T-SQL
Я удивлен, что не могу найти этот вопрос здесь уже.
У меня есть дата и время VAR и я хочу, чтобы преобразовать его в строку, так что я могу добавить его в другую строку. Я хочу его в формате, который может быть легко преобразован обратно в дату времени.
Как я могу это сделать?
(Я хочу дату и время.)
8 ответов:
следующий запрос получит текущую дату и время и преобразует в строку. со следующим форматом
yyyy-mm-dd hh:mm:ss(24h)SELECT convert(varchar(25), getdate(), 120)
можно использовать
convertоператор в Microsoft SQL Server для преобразования даты в строку. Примером используемого синтаксиса может быть:SELECT convert(varchar(20), getdate(), 120)выше будет возвращена текущая дата и время в строке с форматом
YYYY-MM-DD HH:MM:SSв 24 час часы.вы можете изменить число в конце инструкции на один из многих, которые изменят формат возвращаемых строк. Список этих кодов можно найти на MSDN в приведение и преобразование справочный раздел.
есть 3 различных метода в зависимости от того, что я мое требование и какую версию я использую.
вот методы..
1) Использование Convert
DECLARE @DateTime DATETIME = GETDATE(); --Using Convert SELECT CONVERT(NVARCHAR, @DateTime,120) AS 'myDateTime' ,CONVERT(NVARCHAR(10), @DateTime, 120) AS 'myDate' ,RIGHT(CONVERT(NVARCHAR, @DateTime, 120),8) AS 'myTime'2) Использование Cast (SQL Server 2008 и выше)
SELECT CAST(@DateTime AS DATETIME2) AS 'myDateTime' ,CAST(@DateTime AS DATETIME2(3)) AS 'myDateTimeWithPrecision' ,CAST(@DateTime AS DATE) AS 'myDate' ,CAST(@DateTime AS TIME) AS 'myTime' ,CAST(@DateTime AS TIME(3)) AS 'myTimeWithPrecision'3) Использование символьного типа данных фиксированной длины
DECLARE @myDateTime NVARCHAR(20) = CONVERT(NVARCHAR, @DateTime, 120); DECLARE @myDate NVARCHAR(10) = CONVERT(NVARCHAR, @DateTime, 120); SELECT @myDateTime AS 'myDateTime' ,@myDate AS 'myDate'
в дополнение к
CASTиCONVERTфункции в предыдущих ответах, если вы используете SQL Server 2012 и выше вы используете
попробуйте ниже :
DECLARE @myDateTime DATETIME SET @myDateTime = '2013-02-02' -- Convert to string now SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
SELECT CONVERT(varchar, @datetime, 103) --for UK Date format 'DD/MM/YYYY'101-US-MM/DD / YYYY
108-Time-HH: MI: SS
112-дата-ГГГГММДД
121-ODBC-YYYY-MM-DD HH:MI:SS.ФФФ
20-ODBC-YYYY-MM-DD HH: MI: SS
Comments