首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server日期,格式为yyyy-MM-ddThh:mm:ssZ

sql server日期,格式为yyyy-MM-ddThh:mm:ssZ
EN

Stack Overflow用户
提问于 2011-05-24 18:28:54
回答 5查看 83.4K关注 0票数 20

我需要将SQL server中的一组日期格式化为以下格式。

代码语言:javascript
复制
yyyy-MM-ddThh:mm:ssZ

我似乎找不到如何使用字符串中包含的T和Z部分来格式化日期

你知道如何在SQL查询中实现这种格式吗?

EN

回答 5

Stack Overflow用户

发布于 2011-05-24 18:37:44

根据Cast and Convert上的SQL Server2005联机丛书页面,您使用日期格式127,如下例所示

代码语言:javascript
复制
CONVERT(varchar(50), DateValueField, 127)

SQL Server 2000文档没有提到此格式--可能只有2005版或更高版本才提供此格式。

关于末尾添加的时区的说明(来自文档中的注释7):可选的时区指示符Z用于更轻松地将具有时区信息的XML日期时间值映射到没有时区的SQL Server日期时间值。Z是时区UTC-0的指示器。其他时区以+或-方向上的HH:MM偏移量表示。例如: 2006-12-12T23:45:12-08:00。

感谢Martin的这篇笔记:你应该能够使用STUFF来删除毫秒数,因为它们将位于字符串左侧的固定位置。即

代码语言:javascript
复制
SELECT STUFF(CONVERT(VARCHAR(50),GETDATE(), 127) ,20,4,'')
票数 19
EN

Stack Overflow用户

发布于 2016-04-15 00:18:49

您可以使用以下命令在SQL中解析C#输出:

代码语言:javascript
复制
SELECT CONVERT(DATETIME, CONVERT(DATETIMEOFFSET,'2017-10-27T10:44:46Z'))

使用C#通过以下方式生成此代码:

代码语言:javascript
复制
string ConnectionString = "Data Source=SERVERNAME; Initial Catalog=DATABASENAME; Persist Security Info=True; User ID=USERNAME; Password=PASSWORD";

using(SqlConnection conn = new SqlConnection(ConnectionString))
{
    DateTime d = DateTime.Now;

    string Query = "SELECT CONVERT(DATETIME, CONVERT(DATETIMEOFFSET,'" + d.ToString("yyyy-MM-dd") + "T" + d.ToString("HH:mm:ss") + "Z'))"

    conn.Open();

    using(SqlCommand cmd = new SqlCommand(Query, conn))
    {
        using(SqlDataReader rdr = cmd.ExecuteReader())
        {
            if(rdr.HasRows)
            {
                while(rdr.Read())
                {
                    for(int i; i < rdr.length; i++)
                    {
                        Console.WriteLine(rdr[0].ToString());

                    }

                }

                //DataTable dt = new DataTable(); dt.Load(rdr); //Alternative method if DataTable preferred

            }

        }

    }

}
票数 6
EN

Stack Overflow用户

发布于 2020-07-03 20:26:58

代码语言:javascript
复制
DECLARE @SampleDate DATETIME2(3) = '2020-07-05 23:59:59';
SELECT CONVERT(VARCHAR(20), CONVERT(DATETIMEOFFSET, @SampleDate), 127);
--results: 2020-07-05T23:59:59Z 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6109062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档