2013-12-09 23 views

回答

1
SELECT CONVERT(SMALLDATETIME, CONVERT(CHAR(8), 20130901)); 

或者只是作为一个DATETIME(可隐或显式转换为SMALLDATETIME如果需要):

SELECT DATEADD(DAY, 0, CONVERT(CHAR(8), 20130901)); 

但是,为什么不DATE?如果时间总是0(午夜),为什么还要用SMALLDATETIMEDATETIME来承载时间呢?

此外,为什么你存储/传递这个很长?什么阻止有人向您发送201302319999999970000099或甚至包含8位以外的数字的值?我们有日期相关的数据类型是有原因的 - 所以我们不会像日期使用longs这样的事情,这不仅会失去这种验证but also a whole host of other functionality

0

尝试以下。

SELECT CONVERT(DATETIME, CONVERT(VARCHAR(8), 20130901), 112)