【问题标题】:Date format change to dd/mm/yyyy to dd mon yy in sql server日期格式更改为 dd/mm/yyyy 到 dd mon yy 在 sql server
【发布时间】: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 as nvarchar 需要 20 个字节的存储空间,而 DATE 数据类型只需要 3 个字节的存储空间。您应该修复您的数据库以使用正确的数据类型,而不是对直接问题使用创可贴。

标签: sql sql-server date format


【解决方案1】:

尝试如下

   SELECT (convert(NVARCHAR, getdate(), 106))
   25 Sep 2018

select (convert(NVARCHAR, FOUNDEDYEAR, 106))FROM EDELGIVE_KYC_DETAILSS

【讨论】:

  • 您好,我希望日期 25/09/2018 为 2018 年 9 月 25 日。
  • 当我使用 SELECT (convert(NVARCHAR, getdate(), 106)) 时,它会给出正确的答案,但每当我使用 select (convert(NVARCHAR, FOUNDEDYEAR, 106))FROM EDELGIVE_KYC_DETAILSS 它时正在给 25/09/2018
  • @radhasingh 问题是 SELECT (convert(NVARCHAR, getdate(), 106)) 我们在这里传递 getdate() 它将是 '25-09-2018' 格式但是你传递的是什么是 '25/09/2018' 格式,这是不同的,因为只有我要求检查我的答案,一旦它对你有帮助
【解决方案2】:
 SELECT (convert(NVARCHAR, convert(datetime, '25/09/2018', 103), 106))

输出

25 Sep 2018

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2012-03-05
    • 2016-01-02
    相关资源
    最近更新 更多