【问题标题】:SQL Server date format functionSQL Server 日期格式函数
【发布时间】:2011-03-03 08:49:30
【问题描述】:
SELECT CONVERT(VARCHAR(10), GETDATE(), 105)  

此查询返回 [DD-MM-YYYY] 中的日期 格式为 varchar。我需要在 sql server 中的 datetime 数据类型中使用相同的格式。请帮帮我

【问题讨论】:

  • 这是您要找的吗? SELECT CAST(CONVERT(VARCHAR(10), GETDATE(), 105) AS DATETIME)
  • @Verrigo;不,他没有看这个。
  • 我需要将返回值存储到表格列中,为日期时间类型
  • @Verrigo,它以另一种格式返回

标签: sql sql-server


【解决方案1】:

在 SQL Server 中,DATETIME 数据类型存储为 2 个 4 字节整数,因此没有像这样的特定格式。

如果要以特定格式返回日期,则需要将其转换为 VARCHAR 并指定适当的格式标识符。

如果您在 VARCHAR 中有一个日期时间,并且希望将其存储在 SQL Server 的 DATETIME 字段中,那么您应该确保将该值以始终可以安全解释的格式传递给 SQL。例如dd/mm/YYYY 格式是不安全的,因为取决于设置,它在进入时可能会被视为 mm/dd/yyyy。安全格式是:

yyyyMMdd
yyyy-MM-ddThh:mi:ss.mmm

例如

INSERT MyTable (DateField) VALUES ('01/10/2010') -- dd/MM/yyyy not safe
INSERT MyTable (DateField) VALUES ('20101001') -- yyyyMMdd safe

更新:
当您选择一个 DATETIME 字段 (GETDATE(), field, variable....) 时,您在 SSMS 中看到的是一个格式化值,因为这对您有用,而不是显示它的实际内部 8 字节表示。

【讨论】:

    【解决方案2】:

    来了,

    SELECT CONVERT(DATETIME, GETDATE(), 105)
    

    刚刚将VARCHAR 更改为DATETIME

    【讨论】:

    • 这不是他想要的。
    • @Robinclave 检查此anubhavg.wordpress.com/2009/06/11/… 。这可能会有所帮助,但我认为格式化日期是可能的,但只有通过更改 sql server 设置(即可能是系统设置)才能将其设置为 datetime 数据类型
    【解决方案3】:

    这将返回一个日期时间

    SELECT GETDATE()
    

    【讨论】:

    • 这里,返回类型是 varchar 对吧?我需要它的日期时间数据类型
    • @Robin Clave - 不,GETDATE() 返回 DATETIME
    • 确实如此。我说的是 SELECT CONVERT(VARCHAR(10), GETDATE(), 105)
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多