在SQL Server中将“2018-07-02 00:01:22.000”转换为“02-Jul-18”

在SQL Server中将“2018-07-02 00:01:22.000”转换为“02-Jul-18”,sql,sql-server,date,time,sql-server-2012,Sql,Sql Server,Date,Time,Sql Server 2012,我正在尝试将SQL Server中的“2018-07-02 00:01:22.000”转换为“02-Jul-18”。我使用基本的SQL Server转换函数尝试了以下几种可能性,但我无法获得解决方案 SELECT CONVERT(varchar(11), transfer_date, 106) DECLARE @Date AS DateTime = '2018-07-02 00:01:22.000' SELECT CONVERT(varchar(12), @Date, 106) 请尝试以下

我正在尝试将SQL Server中的“2018-07-02 00:01:22.000”转换为“02-Jul-18”。我使用基本的SQL Server转换函数尝试了以下几种可能性,但我无法获得解决方案

SELECT CONVERT(varchar(11), transfer_date, 106) 

DECLARE @Date AS DateTime = '2018-07-02 00:01:22.000'
SELECT CONVERT(varchar(12), @Date, 106)

请尝试以下代码行:

declare @Date as DateTime='2018-07-02 00:01:22.000'

select REPLACE(Convert(varchar(12),@Date,106),' ','-')

如果要将字符串“2018-07-02 00:01:22.000”转换为字符串“02-Jul-18”,则必须使用convert两次,一次将输入转换为日期,第二次将该日期转换为所需格式的字符串

SELECT
    REPLACE(CONVERT(varchar,
                    CONVERT(datetime, '2018-07-02 00:01:22.000', 121),
                    106), ' ' , '-');
请注意,如果起始值已经是日期时间,则可以取消其中一个转换调用:


您可以尝试以下方法:

declare @mydate datetime2
declare @converted varchar(100)
set @mydate = cast('2018-07-02 00:01:22.000' as datetime2)
set @converted = replace(convert(varchar, @mydate , 106), ' ', '-')                    

select concat(left(@converted, 7), right(@converted, 2))
例如:

结果:2018年7月2日

单语句查询


下面的查询将有助于以DD-Mon-YY格式返回日期时间:

结果:

02-Jul-18

到目前为止,您尝试了什么?选择convertvarchar11,transfer_date,106您是否知道不能从一种数据类型转换为另一种数据类型?我是SQL的初学者,如果我错了,很抱歉。以后请编辑问题并添加您尝试过的内容。更妙的是,首先把它放在那里。在这些“2018年7月2日”之间需要一个“-”像这些-2018年7月2日这是非常简单的事情选择REPLACEConvertvarchar12,@Date,106,“,”使用replace@date“它工作得很好,伙计@zedfoxus。谢谢大家给我这个帖子。如果发现任何比这更好的,请随时发布。太好了。将问题的任何答案标记为最终答案,以结束问题。您正在使用许多函数。这是功能滥用。铸造、转换、更换、左侧、右侧和concat。你可以通过转换和替换实现同样的效果。谢谢,阿鲁尔·库马尔。很简单,很完美,这很好。我不知道选项6使用YY而不是YYYY。只要阅读文档就可以意识到:。你知道的越多!回答得好。
select 
concat(
    left (
        replace (
            convert(varchar, cast('2018-07-02 00:01:22.000' as datetime2), 106),
            ' ',
            '-'
        ), 7)
    , right (
        replace (
            convert(varchar, cast('2018-07-02 00:01:22.000' as datetime2), 106),
            ' ',
            '-'
        ), 2)
    )
DECLARE @Date AS DateTime = '2018-07-02 00:01:22.000';
SELECT REPLACE(CONVERT(VARCHAR(9), @Date, 6), ' ', '-');
02-Jul-18