• <legend id='Hvgl0'><style id='Hvgl0'><dir id='Hvgl0'><q id='Hvgl0'></q></dir></style></legend>
    <tfoot id='Hvgl0'></tfoot>

        • <bdo id='Hvgl0'></bdo><ul id='Hvgl0'></ul>
        <i id='Hvgl0'><tr id='Hvgl0'><dt id='Hvgl0'><q id='Hvgl0'><span id='Hvgl0'><b id='Hvgl0'><form id='Hvgl0'><ins id='Hvgl0'></ins><ul id='Hvgl0'></ul><sub id='Hvgl0'></sub></form><legend id='Hvgl0'></legend><bdo id='Hvgl0'><pre id='Hvgl0'><center id='Hvgl0'></center></pre></bdo></b><th id='Hvgl0'></th></span></q></dt></tr></i><div id='Hvgl0'><tfoot id='Hvgl0'></tfoot><dl id='Hvgl0'><fieldset id='Hvgl0'></fieldset></dl></div>

        <small id='Hvgl0'></small><noframes id='Hvgl0'>

      1. 将(连接)日期和时间组合成一个日期时间

        Combining (concatenating) date and time into a datetime(将(连接)日期和时间组合成一个日期时间)
          • <bdo id='qwWRm'></bdo><ul id='qwWRm'></ul>

            <small id='qwWRm'></small><noframes id='qwWRm'>

                <tfoot id='qwWRm'></tfoot>

                  <tbody id='qwWRm'></tbody>

              • <i id='qwWRm'><tr id='qwWRm'><dt id='qwWRm'><q id='qwWRm'><span id='qwWRm'><b id='qwWRm'><form id='qwWRm'><ins id='qwWRm'></ins><ul id='qwWRm'></ul><sub id='qwWRm'></sub></form><legend id='qwWRm'></legend><bdo id='qwWRm'><pre id='qwWRm'><center id='qwWRm'></center></pre></bdo></b><th id='qwWRm'></th></span></q></dt></tr></i><div id='qwWRm'><tfoot id='qwWRm'></tfoot><dl id='qwWRm'><fieldset id='qwWRm'></fieldset></dl></div>

                  <legend id='qwWRm'><style id='qwWRm'><dir id='qwWRm'><q id='qwWRm'></q></dir></style></legend>
                  本文介绍了将(连接)日期和时间组合成一个日期时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  使用 SQL Server 2008,此查询效果很好:

                  select CAST(CollectionDate as DATE), CAST(CollectionTime as TIME)来自外地

                  给我两列这样的:

                  2013-01-25 18:53:00.00000002013-01-25 18:53:00.00000002013-01-25 18:53:00.00000002013-01-25 18:53:00.0000000...

                  我正在尝试使用加号将它们组合成一个日期时间,如下所示:

                  select CAST(CollectionDate as DATE) + CAST(CollectionTime as TIME)来自外地

                  我查看了大约十个网站,包括本网站上的答案(例如 这个),他们似乎都同意加号应该有效,但我收到错误:

                  <块引用>

                  消息 8117,级别 16,状态 1,第 1 行
                  操作数数据类型日期对于加法运算符无效.

                  所有字段都非零且非空.我也尝试过 CONVERT 函数并尝试将这些结果转换为 varchars,同样的问题.这不会像我做的那么难.

                  谁能告诉我为什么这不起作用?感谢您的帮助.

                  解决方案

                  假设底层数据类型是日期/时间/日期时间类型:

                  SELECT CONVERT(DATETIME, CONVERT(CHAR(8), CollectionDate, 112)+ ' ' + CONVERT(CHAR(8), CollectionTime, 108))从 dbo.whatever;

                  这会将 CollectionDateCollectionTime 转换为字符序列,组合它们,然后将它们转换为 datetime.

                  CONVERT 的参数是 data_typeexpression 和可选的 style(参见 语法文档).

                  日期和时间 style112 转换为 ISO yyyymmdd 格式.style108 转换为 hh:mi:ss 格式.显然两者都是 8 个字符长,这就是为什么 data_typeCHAR(8) 的原因.

                  得到的组合字符序列采用 yyyymmdd hh:mi:ss 格式,然后转换为 datetime.

                  Using SQL Server 2008, this query works great:

                  select CAST(CollectionDate as DATE), CAST(CollectionTime as TIME)
                  from field
                  

                  Gives me two columns like this:

                  2013-01-25  18:53:00.0000000
                  2013-01-25  18:53:00.0000000
                  2013-01-25  18:53:00.0000000
                  2013-01-25  18:53:00.0000000
                      .
                      .
                      .
                  

                  I'm trying to combine them into a single datetime using the plus sign, like this:

                  select CAST(CollectionDate as DATE) + CAST(CollectionTime as TIME)
                  from field
                  

                  I've looked on about ten web sites, including answers on this site (like this one), and they all seem to agree that the plus sign should work but I get the error:

                  Msg 8117, Level 16, State 1, Line 1
                  Operand data type date is invalid for add operator.

                  All fields are non-zero and non-null. I've also tried the CONVERT function and tried to cast these results as varchars, same problem. This can't be as hard as I'm making it.

                  Can somebody tell me why this doesn't work? Thanks for any help.

                  解决方案

                  Assuming the underlying data types are date/time/datetime types:

                  SELECT CONVERT(DATETIME, CONVERT(CHAR(8), CollectionDate, 112) 
                    + ' ' + CONVERT(CHAR(8), CollectionTime, 108))
                    FROM dbo.whatever;
                  

                  This will convert CollectionDate and CollectionTime to char sequences, combine them, and then convert them to a datetime.

                  The parameters to CONVERT are data_type, expression and the optional style (see syntax documentation).

                  The date and time style value 112 converts to an ISO yyyymmdd format. The style value 108 converts to hh:mi:ss format. Evidently both are 8 characters long which is why the data_type is CHAR(8) for both.

                  The resulting combined char sequence is in format yyyymmdd hh:mi:ss and then converted to a datetime.

                  这篇关于将(连接)日期和时间组合成一个日期时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Building a comma separated list?(建立一个逗号分隔的列表?)
                  Errors in SQL Server while importing CSV file despite varchar(MAX) being used for each column(尽管每列都使用了 varchar(MAX),但在导入 CSV 文件时 SQL Server 中出现错误)
                  How can I import an Excel file into SQL Server?(如何将 Excel 文件导入 SQL Server?)
                  Export table to file with column headers (column names) using the bcp utility and SQL Server 2008(使用 bcp 实用程序和 SQL Server 2008 将表导出到带有列标题(列名称)的文件)
                  Concat field value to string in SQL Server(将字段值连接到 SQL Server 中的字符串)
                  SQL Server Bulk insert of CSV file with inconsistent quotes(SQL Server 批量插入带有不一致引号的 CSV 文件)

                    1. <i id='4nGJr'><tr id='4nGJr'><dt id='4nGJr'><q id='4nGJr'><span id='4nGJr'><b id='4nGJr'><form id='4nGJr'><ins id='4nGJr'></ins><ul id='4nGJr'></ul><sub id='4nGJr'></sub></form><legend id='4nGJr'></legend><bdo id='4nGJr'><pre id='4nGJr'><center id='4nGJr'></center></pre></bdo></b><th id='4nGJr'></th></span></q></dt></tr></i><div id='4nGJr'><tfoot id='4nGJr'></tfoot><dl id='4nGJr'><fieldset id='4nGJr'></fieldset></dl></div>

                        <tbody id='4nGJr'></tbody>
                    2. <tfoot id='4nGJr'></tfoot>
                      • <bdo id='4nGJr'></bdo><ul id='4nGJr'></ul>
                            <legend id='4nGJr'><style id='4nGJr'><dir id='4nGJr'><q id='4nGJr'></q></dir></style></legend>

                            <small id='4nGJr'></small><noframes id='4nGJr'>