【问题标题】:How to make SQL Server to save datetime with AM/PM format?如何使 SQL Server 以 AM/PM 格式保存日期时间?
【发布时间】:2012-01-24 07:24:19
【问题描述】:

我正在尝试使用 AM/PM 使我的 SQL Server 表 datetime 列保存 datetime。如何让SQL Server以AM/PM格式保存datetime

现在它会像这样保存日期:2012-01-23 14:47:00.000 可以保存2012-01-23 02:47:00.000 PM吗??

或者 SQL Server 是否一直以这种格式 (2012-01-23 14:47:00.000) 保存日期和时间,而我只需要在输出和输入时进行转换?

甚至可以以这种格式保存它(2012-01-23 02:47:00.000 PM)吗?或者 SQL Server 是否以 24 小时格式保存 datetime

确实感谢您的帮助。对不起语言。 ;)

【问题讨论】:

    标签: sql-server sql-server-2008 datetime


    【解决方案1】:

    日期和时间在内部存储为数字。

    它是以 12 小时制还是 24 小时制显示取决于程序对其进行格式化以进行显示。

    【讨论】:

    • 所以你的意思是数据库中的日期时间字段会一直看起来像这样(2012-01-23 14:47:00.000)。它完全取决于程序设置如何向最终用户显示?
    • @Mindaugas 不,它看起来像 35565.34536426,其他工具将此数字解释为日期和时间
    • 更多关于如何插入使用sql查询查看this
    【解决方案2】:

    正如安德鲁所说,日期时间格式不是作为字符串存储的。因此,您可以使用CONVERT 函数以适当的格式获取日期时间值。例如,

    SELECT CONVERT(VARCHAR(20), GETDATE(), 100)
    

    要了解有关日期时间格式的更多信息,请参阅this article

    【讨论】:

      【解决方案3】:

      AM/PM 仅用于可视化,如果需要显示,请使用 CONVERT 关键字:

      SELECT CONVERT(varchar, YourDateTimeField, 109)
      FROM YourTable
      

      如果您需要存储 AM/PM - datetime 类型没有意义,请改用 varchar 类型。

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        根据您存储的日期时间的准确性,您可以使用它进行清理

        REPLACE(CONVERT (varchar, YourDateTimeField, 109), ':00.0000000', ' ')

        如果您的日期字段使用 GETDATE() 填充,这将不起作用,因为这意味着它将包含秒和毫秒,但如果该字段由用户填充并且秒和毫秒全为零,它将起作用

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-19
          • 2012-02-11
          • 1970-01-01
          • 2021-02-17
          • 2016-09-15
          • 1970-01-01
          相关资源
          最近更新 更多