Delphi7:获取SQL服务器系统日期和时间格式
我想获得区域date
和time
格式为SQL Server。我在使用Delphi7这里。我的情况是如下:Delphi7:获取SQL服务器系统日期和时间格式
如果我的服务器的区域日期格式(例如)yyyymmdd
和客户端的SQL服务器为mm/dd/yyyy
(或任何其他有效的日期格式),比生成应包含正确的日期格式的查询。
注:我已经写在Delphi7的其中设置默认格式 MSSQL,将读取服务器的区域日期格式太代码。并将服务器的区域日期格式转换为MSSQL日期格式。
如果我的服务器的区域日期格式(如)YYYYMMDD和客户端的 SQL服务器是有MM/DD/YYYY(或任何其他有效的日期格式),比 查询生成应包含适当的日期格式。
你让自己很难。
您构建的查询不必关心您的客户机或SQL Server的区域格式是如何设置的。
无论区域设置如何,sql server都会理解语言中性格式。
你可以在这里找到它们http://www.karaszi.com/SQLServer/info_datetime.asp#DtFormatsInput
所以,当你真的想建立自己的查询文本比使用"YYYYMMDD"
日期,和日期时间"YYYYMMDD hh:mm:ss"
EX(“20170831 14时23分05秒”)。
现在你不必再关心格式了。
更好的方法是将参数用于查询。
...它为我工作。非常感谢您的帮助。 –
没问题,很高兴我能帮上忙 – GuidoG
在我看来,你应该做的是去了解那里是你的客户的服务器的标准格式,如果它是标准的,那让你的约会对象在不同的变量,即不是一个单一的文本/数字格式“年月日”。为每个使用不同的变量。并通过阅读格式将它们相互匹配。
如果以上是你的问题,那么试试这个。
select SUBSTRING(Date,0,CHARINDEX('/',Date,0)) as Splitted
(在这个日期是在客户端的格式)
或者
Month=SUBSTRING(Date,0,2)
Date=SUBSTRING(Date,3,2)
Year=SUBSTRING(Date,6,4)
然后显示在你想要的任何格式的日期。
我们在不同的地理位置有不同的客户。它不是我们会得到的一个日期格式。 –
使用相同的方法,您可以根据日期的位置和格式分隔查询。 –
这就是我的主要问题:“如何使用delphi7代码获取SQL Server的区域日期格式?” –
尝试是这样的假设全区有相同的格式 选择*形式的数据,其中面积=“ABC”
然后搜索“:”或“/”
现在做的一个子文本被“:”或“/”分隔并得到a,b和c变量。
由于我假设相同的格式acroos区域,我们可以检查一个> 12和两位数然后它是一个日期,b是两个didgits和< 12月,如果c有四个数字,那么它是年。 你可能会认为如果我们01/01/2001那么什么?
因此,我假设所有来自具有统一格式的同一地点的输入。检查所有条件并通过检查是否满足所有条件得到确定的答案。
如果你处理实时类型的数据库,然后比较今天的日期。
该查询返回用于当前会话的日期格式(@@语言点,其语言设置)
Select DateFormat
From sys.syslanguages
Where name = @@Language
感谢您的试用。但是这会将日期转换为Server的区域设置,我想要的是它应该是SQL Server格式的格式。 –
我已经更改了从SQL Server设置获取格式的答案。 –
尝试在查询的一些事情是这样的:
转换(VARCHAR,DOB, 103)为“出生日期”
我想要的是在运行时获取SQL服务器的日期格式。这不会帮助我。 –
不,查询应该包含可绑定参数而不是文本值。 – Victoria
我有用** delphi **编写的代码,它为MSSQL设置了默认格式。它会将服务器的区域日期格式转换为MSSQL日期格式。 –
我仍然错失了为什么要使用文本值进行操作的真正原因。为什么要构建带有日期和时间值表示为文本的SQL命令? – Victoria