我还想将我的nvarchar(50)时间码转换为datetime类型。我的代码就是这个:(例如时间27.03.2013 17:11:27)
UPDATE test
set mytime = CONVERT(nvarchar(50), convert(datetime, mytime, 104))
alter table test
alter column mytime datetime
结果:2013-03-27 17:11:00.000
我总能在没有秒的情况下得到结果!所有秒都重置为零。
我想将我的dd.mm.yyyy hh:mm:ss转换为日期时间为秒!
此转换的视图看起来不错,但在我更新表格后却没有!
select mytime, convert(datetime, mytime, 104)
from test
结果:2013年3月27日17:11:27 2013-03-27 17:11:27.000
我做错了什么?
答案 0 :(得分:1)
<强> Here is SQL Fiddel Demo 强>
您可以尝试以下步骤
CREATE TABLE test
([mytime] varchar(50))
;
INSERT INTO test
([mytime])
VALUES
('27.03.2013 17:11:27')
;
Alter Table test
add mytimeTemp datetime;
set dateformat dmy;
update test
set mytimeTemp = mytime;
update test
set mytimeTemp = '';
alter table test
alter column mytime datetime;
alter table test
drop column mytimetemp;
答案 1 :(得分:0)
因为你使用的是104,所以改为其他风格,如109或113.
如果没有适合您的样式格式。您可以编写一个函数来自定义它,如下所示
CREATE FUNCTION [dbo].[fnGeneral_FormatDateString] (
@dtDate DATETIME,
@iFormat VARCHAR(20)
)
RETURNS VARCHAR(64)
AS
BEGIN
DECLARE @dtDateVC VARCHAR(64)
SELECT @dtDateVC = CASE @iFormat
WHEN 'DD MMM YYYY' THEN RIGHT('0' + CAST(DAY(@dtDate) AS VARCHAR),2) + + SPACE(1) + LEFT(DATENAME(MONTH, CONVERT(DATETIME, @dtDate, 120)),3) + SPACE(1) + CAST(YEAR(@dtDate) AS VARCHAR)
WHEN 'YYYY-MM-DD HH:MM 24' THEN CONVERT(CHAR(10), @dtDate, 23) + ' ' + CONVERT(CHAR(8), @dtDate, 8) --1.2.0.00
ELSE
'Invalid format specified'
END
RETURN @dtDateVC
END