【问题标题】:Convert varchar dd/mm/yyyy to dd/mm/yyyy datetime将 varchar dd/mm/yyyy 转换为 dd/mm/yyyy 日期时间
【发布时间】:2013-10-19 08:39:08
【问题描述】:

我正在尝试将dd/mm/yyyy 格式的varchar 列中的日期转换为日期时间dd/mm/yyyy 格式,这样我就可以对数据运行日期范围查询。

到目前为止,我有以下不起作用

CONVERT(varchar, CAST(date_started AS datetime), 103)

我也试过

convert(date_started as datetime, 103)

我需要确保输出是 dd/mm/yyyy,就像我们在英国一样,而不是 mm/dd/yyyy 格式

【问题讨论】:

  • 您没有将日期存储为日期时间?
  • 我没有,我正在使用一个不是我的系统

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


【解决方案1】:

你可以这样做:

SELECT convert(datetime, convert(date, '27-09-2013', 103), 103) 

【讨论】:

    【解决方案2】:

    如果要返回格式 mm/dd/yyyy,则使用 101 而不是 103: 转换(VARCHAR(10),[我的日期],101)

    【讨论】:

      【解决方案3】:

      我认为这个语法更准确:

      SELECT CONVERT(CHAR(10), GETDATE(), 103)
      

      为了即时测试,我添加了 SELECT 和 GETDATE() :)

      【讨论】:

        【解决方案4】:

        试试这个代码:

        CONVERT(varchar(15), date_started, 103)
        

        【讨论】:

        • 恐怕没有工作,它转换了,但是当我添加 > '01/06/2013' 部分时,我看到的日期可以追溯到 2011 年
        • @Stew 你的 "> '01/06/2013'" 是什么意思-你在你的 OP 中没有提到任何关于它的内容你是怎么处理它的?
        • 它是自动 01 需要 1 月所以出现问题你转换 06/01/2013 工作
        【解决方案5】:

        我想你是这样的:

        CONVERT(datetime, date_as_string, 103)
        

        注意,datetime 没有任何格式。你想想它的介绍。要以适当的格式获取datetime 的数据,您可以使用

        CONVERT(varchar, date_as_datetime, 103)
        

        【讨论】:

        • 那是我以前的,对不起。我的错误这也可以转换,但是当我在我看到 1 月日期的日期执行 > '01/06/2013' 时。
        • > CONVERT(datetime, '01/06/2013', 103) - 然后一切都在 datetime 中,并且在 datetime 数据类型上进行比较。
        猜你喜欢
        • 2017-07-20
        • 1970-01-01
        • 2023-03-15
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        • 2016-06-21
        • 1970-01-01
        相关资源
        最近更新 更多