SQL Server相当于TO_CHAR和格式转换

时间:2017-04-26 15:57:50

标签: sql-server oracle

我想知道如何在SQL Server中转换oracle指令TO_CHAR(MY_COLUMN_NAME, 'YYYYMMDDHH24MISSFF3')。 (包含日期的列)

我想我可以在SQL Server中使用CONVERT(VARCHAR(19), MY_COLUMN_NAME, 120);将日期转换为YYYY-MM-DD格式但是YYYYMMDDHH24MISSFF3格式呢?

4 个答案:

答案 0 :(得分:3)

您可以使用Format()。我应该注意,它不是表演者,但确实有一些不错的功能

Select DateTime   = GetDate()
      ,Formatted = format(GetDate(),'yyyyMMddHHmmssfff')

返回

DateTime                  Formatted
2017-04-26 12:04:01.363   20170426120401363

答案 1 :(得分:1)

在MS SQL 2012+中,有FORMAT函数:

SELECT FORMAT(GETDATE(), 'yyyyMMddHHmmssfff')

答案 2 :(得分:0)

您可以使用format命令(https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql)来访问.net提供的所有功能。大概你使用的是相对最新版本的sql server - 这是你在发布问题时应该提供的信息。作为一个例子(我不知道你的oracle格式产生了什么):

declare @x datetime; 
set @x = '20170415 23:55:01.003';
select @x, FORMAT(@x, 'yyyyMMdd HHmmss.fff');

答案 3 :(得分:0)

在SQL Server 2012之前,您可以使用convert() stylesreplace()

select 
    iso_format = convert(varchar(23),getdate(),121)
  , numbers_only = replace(replace(replace(replace(
          convert(varchar(23),getdate(),121)
           ,'-',''),':',''),' ',''),'.','')

rextester演示:http://rextester.com/YMMG65247

返回:

+-------------------------+-------------------+
|       iso_format        |   numbers_only    |
+-------------------------+-------------------+
| 2017-04-26 18:15:42.590 | 20170426181542590 |
+-------------------------+-------------------+

请注意format()确实存在一些性能问题,即使在SQL Server 2012+上,这也是一个合理的选择。 format() is nice and all, but… - Aaron Berrtand