【问题标题】:update query date function [duplicate]更新查询日期功能
【发布时间】:2013-04-12 06:08:18
【问题描述】:

我为一张表创建更新查询。我需要从旧数据库创建日期。但是不知道怎么弄?

我的查询是,

select 'update organizations set createddate='+CAST(RegisteredDate as varchar(50))+'''where Id='+cast(organizationid as varchar(50))+'' from OrganizationRegisteredDetails

当我使用这个查询时我的结果是

update organizations set createddate=Aug 19 2009 10:20AM'where Id=1

但我想要结果

仅限createddate = 8/19/2009。我不要时间。

那该怎么做呢?

这可能吗?

【问题讨论】:

  • RegisteredDatecreateddate 字段的类型是什么?
  • RTFM! Here's an extensive list of all CAST styles available - 选择最适合您的!我建议使用 ISO-8601 格式(样式 112),因为它是唯一适用于 SQL Server 中所有区域/语言设置的可靠格式
  • 如果两个字段的数据类型相同 datedatetime 则不需要任何转换,日期不会以特定格式存储。\
  • 两者都只是日期时间。但我想要没有时间。

标签: sql sql-server-2008 sql-update


【解决方案1】:

将日期转换为适当的格式。

http://www.sql-server-helper.com/tips/date-formats.aspx

【讨论】:

    【解决方案2】:

    您只能将其用于日期

    SELECT CONVERT(VARCHAR(10),GETDATE(),111)
    

    【讨论】:

    • 我会使用样式编号。 112(ISO 风格),因为无论您的 SQL Server 上的任何区域、语言或日期格式设置如何,它都是唯一能够可靠工作的风格
    • 感谢@marc_s 的关注。肯定会考虑的
    【解决方案3】:

    您错过了在值前添加单引号,

    select 'update organizations set createddate='''
                                                 ^^ here
    

    如果您只想要日期,请使用CAST(RegisteredDate AS DATE)

    【讨论】:

    • 我有一个错误,比如“数据类型 varchar 和 date 在 add 运算符中不兼容”
    • RegisteredDate 是日期还是字符串?
    • 格式是什么?是Aug 19 2009 10:20AM吗?
    • 在数据库中,格式为 2009-08-19 10:20:00。当我在下面添加我的问题时使用我的查询时,我得到了 2009 年 8 月 19 日上午 10:20。但我只想要日期类型。
    • convert(varchar(15), RegisteredDate, 101)怎么样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多