我在sql中有一个查询,我必须以dd/mmm/yy
示例:25/jun/2013
。
如何将其转换为SQL Server?
答案 0 :(得分:61)
我不确定您想要的格式是否完全匹配。但是你可以使用convert()
和样式106
来结束。然后,替换空格:
SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
答案 1 :(得分:44)
SQL Server 2008已经有multiple answers and formatting types。但是这种方法有些含糊不清,你很难记住特定日期格式的数字。这就是为什么在SQL Server的下一个版本中有更好的选择。
FORMAT ( value, format [, culture ] )
使用文化选项,您可以根据观众指定日期。
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------
10/1/2011 01/10/2011 01.10.2011 2011/10/1
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日
对于OP的解决方案,我们可以使用以下格式,@Martin Smith已经提到过:
FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')
一些示例日期格式:
如果您想要更多SQL Server的日期格式,请访问:
答案 2 :(得分:30)
答案 3 :(得分:9)
已接受的答案已经在2008年使用内置格式化方法提供了最佳解决方案。
应该注意的是,返回的结果取决于登录的语言。
SET language Russian
SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/')
返回
06/апр/2015
在撰写本文时。
对于在更新版本的SQL Server上遇到此问题的人来说,避免此问题的方法 - 以及对REPLACE
的需求是
FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')
在2005年以上,可以编写一个接受DateTime,格式化模式和文化的CLR UDF来模拟它。
答案 4 :(得分:8)
尝试使用以下查询。
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');
结果: 20 / Jun / 13
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');
结果: 20 / Jun / 2013
答案 5 :(得分:1)
试试这个
select convert(varchar,getdate(),100)
第三个参数是格式,范围从100
到114
,任何一个都适合你。
如果您需要dd/mmm/yyyy
中的日期,请使用此:
replace(convert(char(11),getdate(),113),' ','-')
将getdate()
替换为您的列名。这对我有用。
答案 6 :(得分:1)
试试这个:
select replace ( convert(varchar,getdate(),106),' ','/')
答案 7 :(得分:0)
任何人都试图手动输入日期到sql server'日期类型'变量在输入时使用此格式:
'yyyy-mm-dd'
答案 8 :(得分:0)
您可以使用此查询-
SELECT FORMAT (getdate(), 'dd/MMM/yy') as date
希望,此查询对您有帮助。
谢谢!
答案 9 :(得分:0)
转换为日期后的格式(在SQL Server v.2017中测试)
dd/mon/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MMM/yyyy')
dd/mm/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MM/yyyy')
dd/Month/yyyy
Select Format(cast('25/jun/2013' as date),'dd/MMMM/yyyy')
答案 10 :(得分:0)
只需获取日期并进行转换
Declare @Date as Date =Getdate()
Select Format(@Date,'dd/MM/yyyy') as [dd/MM/yyyy] // output: 22/10/2020
Select Format(@Date,'dd-MM-yyyy') as [dd-MM-yyyy] // output: 22-10-2020
//string date
Select Format(cast('25/jun/2013' as date),'dd/MM/yyyy') as StringtoDate // output: 25/06/2013
来源:SQL server date format and converting it (Various examples)