SQL Server日期转换和格式问题

时间:2012-10-04 00:59:49

标签: sql sql-server tsql

我正在尝试使用以下命令将yyyy-mm-dd格式存储的表格中的现有sql日期转换为dd-mm-yyyy。在这样做的同时,我可以成功将其转换为nvarchar数据类型,但在将其转换为日期时,我仍会收到相同的旧格式yyyy-mm-dd

这是查询

Select 
    Convert(date, CONVERT(VARCHAR(10), a.LogDateTime, 103), 103) AS LDate  
from sec.[Log] AS a

我也尝试使用以下脚本从nvarchar转换为日期,但结果保持不变。

SELECT convert(date, '23/10/2016', 103)

任何人都可以告诉问题究竟是什么?因为我希望我的日期从我们的格式转换为英国格式而不改变其数据类型。

2 个答案:

答案 0 :(得分:2)

日期不以任何文本格式存储。 DATETIME值以内部格式存储,占用8个字节的磁盘存储空间。 NOT 以文本形式存储。

仅供参考,yyyy-mm-dd不是美国格式。它只是一种普遍接受的,明确的显示格式,SQL Server团队决定使用它来显示SQL Server Management Studio中的日期值。

如果必须以特定形式显示,则必须在显示层中执行此操作,例如Visual Studio创建的桌面应用程序。遗憾的是,没有设置来控制SSMS中的默认格式,因此如果您打算在SSMS中查看它,您只需要使用正确的格式(103)进行CONVERT。

declare @d datetime
set @d = '20120506'
select CONVERT(char(10), @d, 103) -- or column instead of variable

答案 1 :(得分:1)

SELECT  CONVERT (VARCHAR(15), logdatetime, 105)
FROM    sec.[log]