如何在mssql中将nvarchar转换为datetime

时间:2018-05-18 09:48:47

标签: sql sql-server

这里我试图在转换后将nvarchar值插入datetime列,我想要做的是,我需要按照这种格式插入数据“18-05-2018 11:09:31 AM” ,但就我而言,它会返回“2018-05-18 11:09:31.000”

代码:

DECLARE @SESSION_START_TIME NVARCHAR(100) = '18-05-2018 12:12:10 PM';

INSERT INTO EC_USER_SESSION (SESSION_START_DATE)
            VALUES(convert(datetime,@SESSION_START_TIME,105))

我认为转换错了,任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

SELECT 
RIGHT('00'+ CAST(DAY(@date) AS NVARCHAR),2) + '-' +
RIGHT('00'+ CAST(MONTH(@date) AS NVARCHAR),2) + '-' + 
CAST(YEAR(@date) AS NVARCHAR) + ' ' + 
CAST(CONVERT(TIME,@date) AS NVARCHAR)

答案 1 :(得分:0)

日期&时间格式在内部存储为整数,它与日期'01 / 01/1900'的差异。你可以显示&将其操作为不同的格式,但未格式化的select语句将仅以“2018-05-18 11:09:31.000”格式显示。

如果要以指定格式存储,则需要在表格中将datetime列更改为Nvarchar。

将查询用于您指定的格式。

SELECT Convert(VARCHAR, convert(datetime,@SESSION_START_TIME,105),105)+ ' ' +
RIGHT(Convert(VARCHAR, convert(datetime,@SESSION_START_TIME,105), 22) ,11)