将此时间格式转换为秒

时间:2020-03-02 22:01:23

标签: sql sql-server tsql date

我有一列数据如下所示

'1970-01-01 01:15:00.0000000' 
(01(days):15(hours):00(minutes):0000000(seconds))

日期无关紧要,但我想将时间分量转换为秒。我想将此行的输出为140400

4 个答案:

答案 0 :(得分:3)

如果您确实在滥用 const {DocsView, DocsViewMode} = picker var view = new DocsView(picker.ViewId.SPREADSHEETS) view.setMimeTypes("image/png,image/jpeg,image/jpg") view.setMode(DocsViewMode.LIST) view.setSelectFolderEnabled(false) var picker = new picker.PickerBuilder() .enableFeature(picker.Feature.NAV_HIDDEN) .setAppId(appId) .setOAuthToken(oauthToken) .setDeveloperKey(developerKey) .setCallback(resolve) .addView(view) .build() picker.setVisible(true) 数据类型,并使用小时来存储几天,几分钟来存储小时,几秒钟来存储分钟,以及几秒钟来存储秒...您可以这样做...

datetime2

但是我强烈,建议您停止滥用DECLARE @YourDatetime datetime2(7) = '1970-01-01 01:15:00.0100000'; SELECT (DATEPART(HOUR,@YourDatetime) * 86400) + (DATEPART(MINUTE,@YourDatetime) * 3600) + (DATEPART(SECOND,@YourDatetime) * 60) + (DATEPART(MILLISECOND, @YourDatetime) / 10) 数据类型。小时应该是小时,而不是几天。希望这就是为什么您要按照自己的要求去做的原因。

但是,这假定您没有24小时或更长时间的任何值,因为datetime2之类的值不能存储在任何日期和时间数据类型中。

答案 1 :(得分:1)

看起来像小时是几天,分钟是小时,等等

Declare @d DATETIME2='1970-01-01 01:15:00.0000000'

Select (datepart(hour,@d)*3600*24)
      +(datepart(minute,@d)*3600)
      +(datepart(second,@d)*60)

返回

140400

答案 2 :(得分:0)

对该问题的合理解释将返回90,900:

select datediff(second, '1969-12-31', '1970-01-01 01:15:00.0000000')

答案 3 :(得分:0)

您可以使用datediff()计算自参考日期以来的秒数:

datediff(s, '1970-01-01', @mydatetime)

我怀疑您实际上是想在1970年1月1日开始,因为那是一个时代的起点。如果您真的想要一天,那么:

datediff(s, '1969-12-31', @mydatetime)