【问题标题】:Date and Time Format Conversion in SQL Server 2012SQL Server 2012 中的日期和时间格式转换
【发布时间】:2014-04-30 12:34:15
【问题描述】:

我正在使用 SQL Server 2012 sp1。我有一个包含以下日期时间值的表列。

BLDCHKDT
-----------------------
2013-06-19 00:00:00.000
2013-07-22 00:00:00.000
2013-08-21 00:00:00.000
2013-09-20 00:00:00.000
2013-11-18 00:00:00.000

我想检索以下格式的日期和时间:

Date: 19062013
Time: 00000000

有可能吗?我已经查看了 FORMAT、CAST 和 CONVERT 函数的 SQL Server 帮助文档,但似乎没有任何进展。 到目前为止,我尝试了以下转换:

请注意,我将日期时间转换为字符串以方便平面文件导出。

--检索日期

SELECT [DATE-BLDCHKD] = CONVERT (VARCHAR (20), BLDCHKDT, 112)
FROM TABLEA

DATE-BLDCHKD
--------------------
20130619
20130722
20130821
20130920
20131118

--Retrieving Time
SELECT [TIME-BLDCHKD] = CONVERT (VARCHAR (20), BLDCHKDT, 24)
FROM TABLEA

TIME-BLDCHKD
--------------------
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00

感谢您的见解。提前谢谢你。

【问题讨论】:

  • 只是好奇,转换为非标准日期格式如何促进平面文件导出?
  • 我刚看到这家 Hart Co。我正在将记录转换为银行 ACH 格式。非常感谢。

标签: sql sql-server date datetime sql-server-2012


【解决方案1】:

由于您使用的是 SQL Server 2012,因此您可以使用 FORMAT() 函数:

SELECT FORMAT(BLDCHKDT,'ddMMyyyy')
     , FORMAT(BLDCHKDT,'hhmmssfff')

【讨论】:

    【解决方案2】:

    你可以这样做:

    declare @value datetime = getdate()
    
    select 
        replace(convert(varchar(20), @value, 104), '.', '') date_part,
        left(replace(convert(varchar(20), @value, 114), ':', ''), 8) time_part
    

    2014-03-23 17:17:44.660 返回 23032014、17174466

    【讨论】:

      【解决方案3】:

      日期部分使用第 104 位格式:

      select replace (convert (varchar(10), @value, 104), '.', '') as date_part
      

      【讨论】:

        猜你喜欢
        • 2018-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-23
        • 1970-01-01
        • 2019-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多