Sql server MSSQL中的日期时间格式

Sql server MSSQL中的日期时间格式,sql-server,vb.net,Sql Server,Vb.net,在我的应用程序中,我使用DateEdit控件,并使用此格式显示日期dd/MM/yyyy,因此当我使用mssql server 2014(西班牙语)时,日期可以正确保存,但当我使用mssql server 2008(英语)时,日期可以正确保存日期是用这个fomatMM/dd/yyyy存储的,所以我需要知道的是是否有方法以dd/MM/yyyy格式存储日期,无论我使用的是mssql服务器的版本还是我使用的语言? 编辑:为了更好地解释这一问题,此文本2017年7月3日存储在sqlserver 2014中

在我的应用程序中,我使用
DateEdit
控件,并使用此格式显示日期
dd/MM/yyyy
,因此当我使用mssql server 2014(西班牙语)时,日期可以正确保存,但当我使用mssql server 2008(英语)时,日期可以正确保存日期是用这个fomat
MM/dd/yyyy
存储的,所以我需要知道的是是否有方法以
dd/MM/yyyy
格式存储日期,无论我使用的是mssql服务器的版本还是我使用的语言?


编辑:为了更好地解释这一问题,此文本
2017年7月3日存储在sqlserver 2014中,2017年7月3日存储在sqlserver 2008中,2017年3月7日存储在sqlserver 2008中。

检查您的MS SQL Server 2008上的默认语言,如果可能,您可以更改为西班牙语:


此外,您还可以使用CONVERT函数(@ZLK post the link)格式化查询输出,格式为103:
CONVERT(DATETIME,[YOURDATE],103)

检查MS SQL Server 2008上的定义语言,如果可能,您可以改为西班牙语:


此外,您还可以使用CONVERT函数(@ZLK post the link)使用103格式格式化查询输出:
CONVERT(DATETIME,[YOURDATE],103)
以下解决方案有两个选项。您可以根据需要使用一个

DECLARE @Date AS TABLE(val VARCHAR(30));

INSERT INTO @Date VALUES('12/04/2016');
INSERT INTO @Date VALUES('10/01/2015');
INSERT INTO @Date VALUES('17/03/2017');

--Option 1
SELECT TRY_PARSE(val AS DATE USING 'en-gb') 'Option 1' FROM @Date;

--Option 2
SELECT CONVERT(VARCHAR(10),TRY_PARSE(val AS DATE USING 'en-gb'),103) 'Option 2' FROM @Date;
结果如下:


以下解决方案有两个选项。您可以根据需要使用一个

DECLARE @Date AS TABLE(val VARCHAR(30));

INSERT INTO @Date VALUES('12/04/2016');
INSERT INTO @Date VALUES('10/01/2015');
INSERT INTO @Date VALUES('17/03/2017');

--Option 1
SELECT TRY_PARSE(val AS DATE USING 'en-gb') 'Option 1' FROM @Date;

--Option 2
SELECT CONVERT(VARCHAR(10),TRY_PARSE(val AS DATE USING 'en-gb'),103) 'Option 2' FROM @Date;
结果如下:


正如其他人所说:SQL不像我们人类那样存储日期。但那是另一回事。 我认为您需要的是通知SQL您的日期的格式。 最好的选择是使用ISO 8601格式:yyyy-mm-ddThh:mi:ss.mmm。 因此,如果在保存日期之前只使用此格式对其进行格式化,SQL(无论版本或语言)会将其识别为以一年开始,然后是一个月,依此类推本主题的关键是使用前4位数字
这样,2017-01-03将永远是2017年1月3日,而不是2017年3月1日。希望这对你有帮助

正如其他人所说:SQL不像我们人类那样存储日期。但那是另一回事。 我认为您需要的是通知SQL您的日期的格式。 最好的选择是使用ISO 8601格式:yyyy-mm-ddThh:mi:ss.mmm。 因此,如果在保存日期之前只使用此格式对其进行格式化,SQL(无论版本或语言)会将其识别为以一年开始,然后是一个月,依此类推本主题的关键是使用前4位数字
这样,2017-01-03将永远是2017年1月3日,而不是2017年3月1日。希望这对你有帮助

使用此选项可以更改日期格式

select FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

使用此选项可以更改日期格式

select FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

日期没有格式;格式就是向人类显示值的方式。使用日期列和传递日期变量类型,所有的日期都将被删除。日期并不是按照您认为的存储方式“存储”的。日期只是从1900年1月1日开始递增的数字(与时间相同,但时间从午夜开始递增)。如果在使用
SELECT
时始终希望以给定格式显示日期,您可以查看上的页面(在“日期和时间样式”下)。
此文本2017年7月3日存储在sqlserver 2014中,截止2017年7月3日
仅当您正在获取和传递文本时。传递日期并将其保存在日期列中。将“格式化”留待UI层在MSSQL server中保存日期的方式是什么?您的问题中没有代码。日期没有格式;格式就是向人类显示值的方式。使用日期列和传递日期变量类型,所有的日期都将被删除。日期并不是按照您认为的存储方式“存储”的。日期只是从1900年1月1日开始递增的数字(与时间相同,但时间从午夜开始递增)。如果在使用
SELECT
时始终希望以给定格式显示日期,您可以查看上的页面(在“日期和时间样式”下)。
此文本2017年7月3日存储在sqlserver 2014中,截止2017年7月3日
仅当您正在获取和传递文本时。传递日期并将其保存在日期列中。将“格式化”留待UI层在MSSQL server中保存日期的方式是什么?你的问题中没有代码。或者至少这个解决方案应该让你知道你想做什么?或者至少这个解决方案应该让你知道你想做什么?