【问题标题】:Which datetime format to use SQL Server使用 SQL Server 的日期时间格式
【发布时间】:2021-12-21 23:48:09
【问题描述】:

我在表单中有一个日期作为 varchar

DD/MM/YYYY HH:MM:SS AM

例如

16/3/2012 4:39:26 PM

我在MSDN page 中看不到CONVERT() 的有效格式选项

是我遗漏了什么还是必须先重新格式化 varchar 字段?

编辑:

更正了格式,对此感到抱歉

【问题讨论】:

  • @AaronBertrand - 那是十六月。
  • @MattWhitfield 我必须把它放在我的日历上。
  • 好的,所以看起来以前的更新将希腊字母转换为 AM/PM 是问题所在。感谢您的回答,但我应该更多地研究这个问题
  • @MattWhitfield 我想你会发现月份的名称与它们的数字不匹配(10 月 = 10,12 月 = 12)所以 16 将是 12 月。抱歉学究了:)

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

一旦你把你的故事讲清楚了,你会想要以下之一:

-- if you really meant dd/mm/yyyy then:

SELECT CONVERT(DATETIME, '16/3/2012 4:39:26 PM', 103);

-- if you really meant mm/dd/yyyy then:

SELECT CONVERT(DATETIME, '3/16/2012 4:39:26 PM', 101);

但同意 Madhivanan。不要使用错误的数据类型存储日期,如果必须,请使用明确的格式!

【讨论】:

    【解决方案2】:
    1. 始终使用正确的 DATETIME 数据类型来存储日期
    2. YYYYMMDDYYYYMMDD HH:MM:SS 是明确的日期格式

    更多信息,参考这里

    http://beyondrelational.com/modules/2/blogs/70/posts/10898/understanding-datetime-column-part-ii.aspx

    【讨论】:

    • 不幸的是,这是从我无法控制的文件中导入的。否则我会确保使用明确的格式
    【解决方案3】:

    这会起作用。

    DECLARE @dt varchar(100)='2012/3/16 4:39:26 PM'
    select convert(datetime,@dt,101)
    

    【讨论】:

    • 在转换函数中使用 103 作为选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多