1

我还想将我的 nvarchar(50) 时间码转换为日期时间类型。我的代码是这个:(示例时间 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

结果:27.03.2013 17:11:27 2013-03-27 17:11:27.000

我做错了什么?

4

2 回答 2

1

Here is SQL Fiddel Demo

You can try below steps

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;
于 2013-08-29T09:04:58.263 回答
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
于 2013-08-29T08:35:43.580 回答