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(英语)时,日期可以正确保存日期是用这个fomatMM/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中保存日期的方式是什么?你的问题中没有代码。或者至少这个解决方案应该让你知道你想做什么?或者至少这个解决方案应该让你知道你想做什么?