如何将长值20130901转换为smalldatetime

时间:2013-12-09 00:41:31

标签: sql-server sql-server-2008

如果我有一个长值20130901,我该如何将其转换为smalldatetime

2013-09-01 00:00:00

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

请尝试以下操作。

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