【发布时间】:2019-02-28 18:38:21
【问题描述】:
我尝试以下查询以获取日期格式为 2018 年 9 月 25 日,但它没有转换日期类型,实际日期格式为 dd/mm/yyyy 格式。
请帮忙。
select convert(varchar, FOUNDEDYEAR, 108)FROM EDELGIVE_KYC_DETAILSS
【问题讨论】:
-
为什么要将日期存储在字符串中?
-
日期在 SQL Server 中没有格式;您应该将它们存储为
date数据类型并担心表示层中的格式。 -
您好,我将日期存储为 dd/mm/yy 格式
-
为了子孙后代,开始思考你的代码吧。您的 FOUNDEDYEAR 专栏是 nvarchar - 为什么您认为将其转换为 varchar 有什么用处?它不会 - 如果 unicode 值包含 ascii 中不存在的字符,它可能会意外损坏您的值。它也不会改变任何可能存在的格式。停止懒惰并转换/转换为特定长度的字符串 - 不要假设将使用正确的长度。最后 - 所有列都可以为空?不——那是错误的。
-
正如其他人指出的那样 - 您的
SELECT不起作用,因为您将数据存储为nvarchar(20)而不是DATE数据类型。从效率的角度来看,这是一个糟糕的设计,因为 dd/mm/yyyy asnvarchar需要 20 个字节的存储空间,而 DATE 数据类型只需要 3 个字节的存储空间。您应该修复您的数据库以使用正确的数据类型,而不是对直接问题使用创可贴。
标签: sql sql-server date format