2012-03-13 36 views
0

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

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)vs其他地区的日期(可能是dd/mm/yyyy 24:hr)

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

+0

这通常是做客户端...你在网站上工作,一个Windows应用程序,或者是什么? – Andomar 2012-03-13 17:12:29

回答

1

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

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

这将返回日期格式。对于us_english,它返回'mdy'。

+0

我必须更改(在我的服务器上或在安装过程中)使默认的dmy dateformat。我想模拟来自其他国家的机器? – Rod 2012-03-15 21:22:38

+0

您可以更改所有登录的默认语言,也可以更改新登录的默认语言。请参阅:http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/setting-a-standard-dateformat-for-sql-se – 2012-03-19 22:18:04

1

依赖机器在SQL级别的区域设置将是一个相当奇怪的方式(特别是对于服务器/客户端场景,因为任何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实施正确的样式参数。

+0

我的问题是这是一个SQL脚本file.sql,我不知道如何从UI代码(c#setup program.exe)获取该信息到SQL脚本 – Rod 2012-03-13 17:12:49

+0

该SQL脚本文件必须针对SQL实例运行虽然?只要你这样做,任何SQL的地区设置刮会擦掉服务器设置,而不是客户端...如果你想坚持* .sql文件 - 你只需要编辑它们以包括格式代码根据我的答案。 – HeavenCore 2012-03-13 17:22:40