Ларри, я дам вам ответ на SQL Server Part.
Вы можете использовать системное представление sys.syslanguages
для получения информации о языках, установленных на сервере sql, один из столбцов, возвращаемых этим представлением, называется dateformat
, которые указывают порядок дат для Например, DMY.
также используя функцию @@langid
(которая возвращает идентификатор (ID) локального языка языка, который используется в настоящее время.) Вы можете написать что-то вроде этого, чтобы получить текущий формат даты, используемый Сервер Sql.
select dateformat from sys.syslanguages where langid=@@langid
так что теперь у вас будет строка, которую вы можете проанализировать в delphi для форматирования вашей даты.
Другой вариант - выбрать один из предопределенных форматов SQL Server и использовать функцию CONVERT
в предложении SQL для преобразования строки в дату.
проверьте этот пример, который использует формат ISO для преобразования
//The ISO format is yyyymmdd so i can use the FormatDateTime function to convert any TdateTime to a Iso format sdatetiem string
DateStr:=FormatDateTime('YYYYMMDD',Now);
//Now construct the sql server sentence
SqlSentence:=Format('UPDATE MyTable SET DateField=CONVERT(DATETIME,%s,112)',QuotedStr(DateStr));