【问题标题】:Stored procedure adds time to date format存储过程添加时间到日期格式
【发布时间】:2020-05-05 11:05:49
【问题描述】:

我正在使用 SQL 服务器和存储过程,我想做一个简单的 SELECT。

在我的表中,我有一个 DATE 格式,它在数据库中正确显示为 yy-mm-dd。 当我在我的 C# 应用程序中调用存储过程时,我还会获得每一行的时间值(11/14/1987 12:00:00 AM)。

如何删除时间格式?

这是我选择的存储过程:

ALTER procedure [dbo].[Employee_GetAllEmployees]
AS
BEGIN
SELECT * FROM 
    dbo.Employee
END

【问题讨论】:

  • 你想要什么格式?编辑问题。
  • 我想要日期格式。没时间
  • 你想在哪里格式化日期时间?您是否只希望 sproc 返回一个日期(没有时间),还是该 dateTime 会在其他地方使用并需要时间部分?
  • 我希望存储过程返回一个日期(没有时间)

标签: c# sql-server date


【解决方案1】:

如果您只想要date,请使用convert()

SELECT emp.*, CONVERT(DATE, date_col) AS New_date
FROM dbo.Employee emp;

【讨论】:

  • @alexxa。 . . emp 是在所有 dbms 中有效的表别名。
  • ty,但不幸的是结果是一样的:(..我还有时间
  • @alexxa。 . .您需要使用new_date 列,而不是旧列。
  • 是的。我这样做了。我会再试一次。谢谢你的耐心
【解决方案2】:

SQL Server date 数据类型 maps to .NET DateTime,包括时间组件。为了在您的应用程序中进行格式化,请根据您想要的显示格式使用ToString

var formattedDateString = dateTypeField.ToString("yyyy-MM-dd");

虽然您可以在 T-SQL 中格式化该值并改为返回一个字符串,但为呈现格式化而增加数据库服务器的负担会限制性能和可伸缩性,并且不被视为最佳实践。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多