13 Ago 2017 10:56
13 Ago 2017 23:52
FUNCTION DateSql( dDate )
LOCAL cString
cString := StrZero( Year( dDate ), 4 ) + "-" + StrZero( Month( dDate ), 2 ) + "-" + StrZero( Day( dDate ), 2 )
IF cString == "0000-00-00"
cString := "NULL"
ELSE
cString := StringSql( cString )
ENDIF
RETURN cString
14 Ago 2017 07:19
ALTER TABLE `city` CHANGE `DatadoDia` `CountryCode` DATETIME CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '0000:00:00 00:00:00';
14 Ago 2017 12:07
14 Ago 2017 13:23
Sem precisar mexer no fonte, ajuste o campo na sua tabela para ter o valor padrão caso não venha no INSERT, tipo 0000:00:00 (se for DATE) ou 0000:00:00 00:00:00 (se for DATETIME).
Exemplo:
ALTER TABLE `city` CHANGE `DatadoDia` `CountryCode` DATETIME CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '0000:00:00 00:00:00';
Lembrando que data zerada não é padrão em SQL.
Se o MySQL estiver com STRICT MODE ativado também não aceita data zerada.
O padrão pra qualquer campo sem nada é NULL, que equivaleria ao NIL do Clipper/Harbour.
14 Ago 2017 13:58
:QueryCreate()
:QueryAdd( "IDCLI_COD", nCodigo )
:QueryAdd( "CLI_NOME", cNome )
:QueryAdd( "CLI_NASCEU", dData )
:QueryExecuteInsert( "CLIENTES" )
14 Ago 2017 14:07
15 Ago 2017 07:51
cString := StrZero( Year( dDate ), 4 ) + "-" + StrZero( Month( dDate ), 2 ) + "-" + StrZero( Day( dDate ), 2 )
cString :=hb_dtoc(dDate,"yyyy-mm-dd")
* harbour/source/rtl/dateshb.c
+ added new .prg functions to mange date and timestamp values:
HB_DATETIME() -> <tTimeStamp>
HB_CTOD( <cDate> [, <cDateFormat> ] ) -> <dDate>
HB_DTOC( <dDate> [, <cDateFormat> ] ) -> <cDate>
HB_NTOT( <nValue> ) -> <tTimeStamp>
HB_TTON( <tTimeStamp> ) -> <nValue>
HB_TTOC( <tTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) ->
<cTimeStamp>
HB_CTOT( <cTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) ->
<tTimeStamp>
HB_TTOS( <tTimeStamp> ) -> <cYYYYMMDDHHMMSSFFF>
HB_STOT( <cDateTime> ) -> <tTimeStamp>
<cDateTime> should be in one of the above form:
- "YYYYMMDDHHMMSSFFF"
- "YYYYMMDDHHMMSSFF"
- "YYYYMMDDHHMMSSF"
- "YYYYMMDDHHMMSS"
- "YYYYMMDDHHMM"
- "YYYYMMDDHH"
- "YYYYMMDD"
- "HHMMSSFFF"
- "HHMMSSF"
- "HHMMSS"
- "HHMM"
- "HH"
Important is number of digits.
HB_TSTOSTR( <tTimeStamp> [, <lShorten> ] ) -> <cTimeStamp> // YYYY-MM-DD HH:MM:SS.fff
HB_STRTOTS( <cTimeStamp> ) -> <tTimeStamp>
<cTimeStamp> should be in one of the above form:
YYYY-MM-DD [H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
YYYY-MM-DDT[H[H][:M[M][:S[S][.f[f[f[f]]]]]]] [PM|AM]
The folowing characters can be used as date delimiters: "-", "/", "."
T - is literal "T" - it's for XML timestamp format
if PM or AM is used HH is in range < 1 : 12 > otherwise
in range < 0 : 23 >
HB_HOUR( <tTimeStamp> ) -> <nHour>
HB_MINUTE( <tTimeStamp> ) -> <nMinute>
HB_SEC( <tTimeStamp> ) -> <nSeconds> // with milliseconds
* harbour/source/rtl/datec.c
+ accept timestamp parameters in CMONTH() and CDOW() functions
* harbour/source/rtl/empty.c
+ added support for timestamp items
15 Ago 2017 08:34
PROCEDURE Main
LOCAL d
d := Ctod("")
? hb_Dtoc( d, "YYYY-MM-DD" )
? hb_Dtoc( Date(), "YYYY-MM-DD" )
RETURN
- -
2017-08-15
15 Ago 2017 08:43
15 Ago 2017 08:57
15 Ago 2017 09:27
? STRTRAN( hb_Dtoc( ctod(""), "YYYY-MM-DD" )," ","0")
15 Ago 2017 09:41
15 Ago 2017 09:52
15 Ago 2017 10:01
PROCEDURE Main
? hb_Ctod( "20170815", "YYYYMMDD" )
? hb_Ctod( "15082017", "DDMMYYYY" )
? hb_Ctod( "2017-08-15", "YYYY-MM-DD" )
? hb_Ctod( "15-08-2017", "DD-MM-YYYY" )
RETURN
/ /
/ /
08/15/17
08/15/17