Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server格式日期为';%Y-%m-%d%I:%m%P';/';2012-04-05上午11:56;_Sql_Sql Server_Formatting - Fatal编程技术网

SQL Server格式日期为';%Y-%m-%d%I:%m%P';/';2012-04-05上午11:56;

SQL Server格式日期为';%Y-%m-%d%I:%m%P';/';2012-04-05上午11:56;,sql,sql-server,formatting,Sql,Sql Server,Formatting,我总是发现SQL Server日期格式与直觉相反。我很确定我已经知道唯一的答案是使用大量转换和字符串函数,但我想我会问以防万一 如何让SQL Server将日期时间格式设置为: %Y-%m-%d %I:%M%P or '2012-04-05 11:56am' 我目前的方法是使用selectconvert(VARCHAR(19),GETDATE(),120)回调数据,然后在代码中循环服务器/客户端。我发现在某些情况下,将数据导出到CSV时效率低下。我认为真正的答案是“您没有”,除非您将SQL S

我总是发现SQL Server日期格式与直觉相反。我很确定我已经知道唯一的答案是使用大量转换和字符串函数,但我想我会问以防万一

如何让SQL Server将
日期时间
格式设置为:

%Y-%m-%d %I:%M%P or '2012-04-05 11:56am'

我目前的方法是使用
selectconvert(VARCHAR(19),GETDATE(),120)
回调数据,然后在代码中循环服务器/客户端。我发现在某些情况下,将数据导出到CSV时效率低下。

我认为真正的答案是“您没有”,除非您将SQL Server实例升级到SQL Server 2012


与其返回
Varchar(19)
不如返回
日期
并让客户端代码格式化,itI可以轻松返回UNIX时间戳并在代码中进行格式化。我的问题是如何利用数据库进行格式化。在某些情况下,如进行大型CSV转储或与其他应用程序接口时,这是首选的,我对格式的唯一控制是使用SQL。啊,现在我感觉很糟糕,不知道该给谁打分。我不应该用SO来抨击MSSQL……我不在乎谁得到了分数,只要把那些对你有帮助的给你投票就好了。@ficuscr:是的,我认为这是你所说的“大量转换和字符串函数”的方法之一。如果这个或另一个答案是更好的答案,那么一定要接受这个答案(而不是我的!)@Peter:这正是我所说的slew:)好吧,我们有两个很好的例子来说明如何在一个人被迫这样做的情况下做到这一点。至少给出线程的优点。我个人就是不能让自己使用这样的东西。如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!
select 
    cast(datepart(YYYY, GETDATE()) as varchar) + '-' +
    right('0' + cast(datepart(MM, GETDATE()) as varchar), 2) + '-' +
    right('0' + cast(datepart(DD, GETDATE()) as varchar), 2) + ' ' +
    LTRIM(RIGHT(cast(GETDATE() AS varchar), 8))
DECLARE @d AS datetime;
SET @d = '2012-04-04 16:43:00'
SELECT LEFT(CONVERT(VARCHAR, @d, 120), 11) 
       +  RIGHT('0' + LTRIM(SUBSTRING(CONVERT(VARCHAR, @d, 131), 12, 5)), 5) 
       + LOWER(RIGHT(CONVERT(VARCHAR, @d, 131), 2))
--2012-04-04 04:43pm