0

我想转换一个表格列

出发时间

06:44:00(<- 这些只是NVARCHAR字符串)

06:45:00

06:45:00

06:46:00

06:47:00

06:47:00

06:48:00

06:49:00

06:50:00

06:50:00

06:50:00

06:51:00

06:51:00

06:52:00

06:52:00

(对不起,伙计们,我真的想在这里发布一个屏幕截图,这会使帖子看起来好多了,但它说我需要 10 的声誉。所以,我只制作一个表格列)

NVARCHAR数据类型中,哪个在 MSSQL 2012 中转换为TIME类型?

我尝试了 Time(0) 和 Time(7) 并且都抛出了一个错误

“从字符串转换日期和/或时间时转换失败。”

而且我确实想永久更改表格该列的类型。不仅选择它们并以时间格式呈现它们。

所以......任何人都可以帮助我如何做到这一点?

谢谢!

4

3 回答 3

0
select convert(varchar(32),getdate(),8)

或者

DECLARE @DateNow smalldatetime
SET @DateNow = GETDATE()

SELECT CONVERT(CHAR(5), @DateNow, 8) 

或者

 UPDATE your_tablename
    SET columnName = CONVERT(NVARCHAR(255),CONVERT(SMALLDATETIME, columnName,105))
    ALTER TABLE myTable
    ALTER COLUMN columnName SMALLDATETIME
于 2013-10-28T08:56:29.490 回答
0

以下工作如(I)所期望的那样,并最终得到一个由单列组成的表time(7)

create table T (Departure_time nvarchar(10) not null)
insert into T(Departure_time) values
('06:44:00'),('06:45:00'),('06:45:00'),('06:46:00'),('06:47:00'),
('06:47:00'),('06:48:00'),('06:49:00'),('06:50:00'),('06:50:00'),
('06:50:00'),('06:51:00'),('06:51:00'),('06:52:00'),('06:52:00')

alter table T alter column Departure_Time time(7) not null

我怀疑您有一些行中没有有效值。这些可能或多或少容易发现,具体取决于无效值与所需格式的接近程度。

select * from t where not Departure_time like '[0-2][0-9]:[0-5][0-9]:[0-5][0-9]'

查找绝对错误的值。但它不会找到例如27:34:32

于 2013-10-28T09:17:26.777 回答
0

解决方案非常简单:

select cast (Departure_time as time) from <you_table>
于 2013-10-28T09:01:32.527 回答