What is the preferred format to store date/times in a SQL Server database when PHP is your primary language?

前端 未结 3 1670
野趣味
野趣味 2021-02-05 22:25

I am planning a PHP application that needs to store date/times in an MSSQL database. (For the curious, it is a calendar application.) What is the preferred format to store this

相关标签:
3条回答
  • 2021-02-05 22:48

    Hello and good day for everyone

    Yes , might be thats the best way , store dates in db, they will take db format and you can format when you need as you wich

    But there is another one solution in the ISO-developed international date format, i mean ISO 8601.

    The international format defined by ISO (ISO 8601) tries to address all date problems by defining a numerical date system as follows: YYYY-MM-DD where

    YYYY is the year [all the digits, i.e. 2100] MM is the month [01 (January) to 12 (December)] DD is the day [01 to 31] depending on moths :P

    Using numerical dates does have also some pitfalls with regard to readability and usability it is not perfect.But ISO date format is, however, the best choice for a date representation that is universally (and accurately) understandable.

    Note that this format can also be used to represent precise date and time, with timezone information

    Here is a detailed information about ISO 8601:2000

    http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm

    With no more.... Bye bye

    0 讨论(0)
  • 2021-02-05 23:07

    I would store the dates in the MS-SQL format to assist in using the date manipulation functions in T-SQL to their fullest. It's easier to write and read

    SELECT * FROM Foo
    WHERE DateDiff(d,field1,now()) < 1
    

    Than to try and perform the equivalent operation by manipulating integers

    To convert a MsSQL date into a unix timestamp use dateDiff:

    SELECT DATEDIFF(s,'1970-01-01 00:00:00',fieldName) as fieldNameTS
    FROM TableName
    WHERE fieldName between '10/1/2008' and '10/31/2008'
    

    To Convert an Unix Timestamp into a MsSQL Date, you can either do it in PHP:

    $msSQLDate = date("Y-m-d H:i:s", $unixDate );
    

    or in MsSQL

    INSERT INTO TableName ( 
      fieldName
    ) VALUES (
      DATEADD(s,'1970-01-01 00:00:00', ? ) 
    ) 
    

    Where parameter one is int($unixDate)

    0 讨论(0)
  • 2021-02-05 23:11

    I'd recommend the same as i do for all dates in any db engine, the db native type. (DATETIME)

    Just use "YYYY-MM-DD HH:MM:SS" for inserting in php: date('Y-m-d H:i:s', $myTimeStampInSeconds);

    -edit in response to comments below here -

    1. for selected columns you can use $timestamp = strtotime( $yourColumnValue );
    2. i recommend storing in the databas native format because you can then use SQL to compare records using SQL date/time functions like DATEADD() etc.
    0 讨论(0)
提交回复
热议问题