从机器设置中检索日期格式

时间:2012-03-13 16:45:15

标签: sql tsql

如何检索脚本运行的机器的日期格式

declare @inputdate varchar(25)
declare @datetemp datetime

select @inputdate = '3/13/2012'

select @datetemp = CAST(@inputdate as DATETIME)

select @datetemp

这是场景:我有一个日期字符串,我需要以自定义方式(mm / dd / yyyy am / pm)格式化美国日期与国家其他地区的其他日期(可能是dd / mm / yyyy 24:hr)

所以我需要找到一种方法来获取机器的日期格式设置。

2 个答案:

答案 0 :(得分:1)

依赖于SQL Level的机器区域设置将是一种相当奇怪的方式(特别是对于服务器/客户端场景,因为任何SQL都会获得服务器设置)。例如,不是依靠CAST将字符串转换为日期,而是通过指定源字符串的格式来更具体一些。例如:

DECLARE @inputdate VARCHAR(25) 
DECLARE @datetemp DATETIME
SELECT  @inputdate = '13/03/2012'  
SELECT  CONVERT(DATETIME,  @inputdate, 103)  --### 103 = DD/MM/YYYY input date
SELECT  @inputdate = '03/13/2012'  
SELECT  CONVERT(DATETIME,  @inputdate, 110)  --### 110 = MM/DD/YYYY input date

注意如何通过告诉SQL字符串所处的格式,将两个不同的输入日期转换为同一天。您的界面可以将用户限制为特定日期格式或确定区域设置并通过这对SQL&让SQL相应地实现正确的样式参数。

答案 1 :(得分:1)

我怀疑机器的日期格式设置并不是你想要的。在服务器上运行查询时,它使用登录用户的语言设置。有一种方法可以获取登录用户的日期格式...

Select DateFormat 
From   sys.syslanguages 
Where  name = @@Language

这将返回dateformat。对于us_english,它返回'mdy'。